scrapy 2.3 创建蜘蛛
蜘蛛是你定义的类,Scrapy用来从一个网站(或一组网站)获取信息。它们必须是子类 Spider
定义要发出的初始请求,可以选择如何跟踪页面中的链接,以及如何解析下载的页面内容以提取数据。
这是我们第一只蜘蛛的代码。将其保存在名为的文件中 quotes_spider.py
下 tutorial/spiders
项目中的目录:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
如你所见,我们的蜘蛛子类 scrapy.Spider
并定义了一些属性和方法:
-
name
:标识蜘蛛。它在一个项目中必须是唯一的,也就是说,不能为不同的蜘蛛设置相同的名称。 -
start_requests()
:必须返回一个ITable of requests(您可以返回一个请求列表或编写一个生成器函数),蜘蛛将从中开始爬行。随后的请求将从这些初始请求中依次生成。 -
parse()
:将调用的方法,用于处理为每个请求下载的响应。响应参数是的实例 TextResponse
它保存页面内容,并有进一步有用的方法来处理它。这个 parse()
方法通常解析响应,将抓取的数据提取为dict,并查找新的URL以跟踪和创建新的请求。( Request
0 从他们那里。