Spider类定义了如何爬取某个网站。包括爬取的动作以及如何从网页的内容中提取结构化数据。
Spider就是定义爬取的动作及分析某个网页的地方。
爬取的循环:
①以初始的URL初始化Request,并设置回调函数。当该request下载完毕并返回时,将生成response,并作为参数传给该回调函数。
spider中初始的request是通过调用start_requests()来获取的。start_requests()读取start_urls中的URL,并以parse为回调函数生成Request.
②在回调函数内分析返回的(网页)内容。返回Item对象或者Request或者一个包括二者的可迭代容器。返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可以相同)。
③在回调函数内,可以使用选择器(Selectors)(也可以使用BeautifulSoup,lxml或者想用的任何解析器)来分析网页内容,并根据分析的数据生成item。
④最后由spider返回的item将被存到数据库(由某些Item Pipeline处理)或使用Feed exports存入到文件中。
Spider参数
Spider可以通过接收参数来修改其功能。spider参数一般用来定义初始URL或者指定限制爬取网站的部分。也可以使用其来配置spider的任何功能。
在运行crawl时添加-a可以传递Spider参数
scrapy crawl myspider -a category=electronics
Spider
class scrapy.spider.Spider
Spider是最简单的spider。每个其他的spider必须继承自该类(包括Scrapy自带的其他spider以及自己编写的spider)。Spider并没有提供什么特殊的功能。其仅仅请求给定的start_urls/start-requests,并根据返回的结果(resulting responses)调用spider的parse方法。
name
定义spider名字的字符串。spider的名字定义了Scrapy如何定位(并初始化)spider。所以其必须是唯一的。