3. Spiders
Scrapy的核心Spider类。配置需要获取的网站url,以及分析网页的地方。
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参数
通过scrapy -a 传参数,在spider构造函数中获取参数
scrapy crawl myspider -a category=electronics
import scrapy class MySpider(Spider): name = 'myspider' def __init__(self, category=None, *args, **kwargs): super(MySpider, self).__init__(*args, **kwargs) self.start_urls = ['http://www.example.com/categories/%s' % category]
Spider类:
name:定义spider名字的字符串(string),必须是唯一的。
allowed_domains(非必须):
包含了spider允许爬取的域名(domain)列表(list)。 当 OffsiteMiddleware
启用时, 域名不在列表中的URL不会被跟进。
start_urls:
当没有制定特定的URL时,spider将从该列表中开始进行爬取。