创建第一个爬虫蜘蛛(2)python SCRAPY教程1.51以上版本
蜘蛛是您定义的类,Scrapy用来从网站(或一组网站)中提取信息。它们必须子类化 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 = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('Saved file %s' % filename)
如您所见,我们的Spider子类scrapy.Spider
并定义了一些属性和方法:
-
start_requests()
:必须返回Spider将开始爬行的可迭代请求(您可以返回请求列表或编写生成器函数)。后续请求将从这些初始请求中连续生成。 -
parse()
:将调用一个方法来处理为每个请求下载的响应。响应参数是TextResponse
保存页面内容的实例,并具有处理它的其他有用方法。该
parse()
方法通常解析响应,将抽取的数据提取为dicts,并查找要遵循的新URL并Request
从中创建新的request()。