Scrapy.SpiderRule():掌握常用规则的应用方法
Scrapy.SpiderRule是Scrapy中一个用于定义爬取规则的类,用于指定如何从爬取的响应中提取需要的数据。它被用于Spider类的rules属性中,通过多个SpiderRule的组合,可以指定多个不同的爬取规则。
SpiderRule的构造函数接收三个参数:link_extractor,callback和follow。其中,link_extractor是一个LinkExtractor对象,用于定义如何提取链接;callback是一个字符串或者callable对象,用于定义如何处理提取到的链接;follow是一个布尔值,指示是否跟进链接。
下面是SpiderRule的一个使用例子:
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Rule, CrawlSpider
class MySpider(CrawlSpider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
rules = (
Rule(LinkExtractor(allow=r'/category/'), callback='parse_category', follow=True),
Rule(LinkExtractor(allow=r'/item/'), callback='parse_item', follow=False),
)
def parse_category(self, response):
# 处理提取到的分类页链接的响应
pass
def parse_item(self, response):
# 处理提取到的详情页链接的响应
pass
在上述例子中,MySpider类继承自CrawlSpider类,并在其rules属性中定义了两个SpiderRule,分别用于提取分类页链接和详情页链接。其中,第一个SpiderRule定义了如何提取分类页链接的规则,allow参数指定了匹配链接的正则表达式,callback参数指定了处理提取到的链接的回调函数(parse_category),follow参数为True表示跟进这些链接。第二个SpiderRule定义了如何提取详情页链接的规则,allow参数指定了匹配链接的正则表达式,callback参数指定了处理提取到的链接的回调函数(parse_item),follow参数为False表示不跟进这些链接。
当使用CrawlSpider启动爬虫时,它会根据rules属性中定义的SpiderRule,从start_urls指定的起始链接开始爬取数据,并按照SpiderRule中定义的规则提取链接,并通过对应的回调函数处理提取到的链接的响应。
总结来说,Scrapy.SpiderRule是用于定义爬取规则的类,通过多个SpiderRule的组合,可以指定多个不同的爬取规则。在使用SpiderRule时,需要通过LinkExtractor定义如何提取链接,并指定回调函数处理提取到的链接的响应,并可以选择是否跟进链接。掌握Scrapy.SpiderRule的用法可以灵活地定义爬虫的爬取行为,提高爬取效率。
