通用爬虫scrapy
一 crawlspider
crawlspider 是scrapy提供的一个通用爬虫,crawlspider 继承了spider类,除了拥有spider类的所有方法和属性。crawlspider还拥有着自己的属性和方法
- 属性rules :它定义了爬取网站的规则,是一个包含一个或多个rule的列表,每个rule都对网站的爬取规则做了定义,crawlspider会对rules中的rule进行一个个解析。
- 属性parse_start_url: 它是一个可以重写的方法当start_url中的Request的到Response时,它会分析Response并返回Item对象或是 Response对象
rule参数解析
- link_extractor:是linkExtractor对象,通过它,spider可以知道从爬取页面中提取哪些链接,提取出的链接自动会生成Request,比较常用
- allow是一个正则表达式或正则表达式列表,定义了符合要求的且需要跟进的链接。allow_domain相当于白名单,里面的链接符合要求,会生成新的Request,deny_domain相当于黑名单
- restrict_xpath:定义了从当前页面中XPath匹配的区域提取链接,其值是XPath表达式或XPath表达式列表。
- restrict_css定义了从当前页面中CSS选择器匹配的区域提取链接,其值是CSS选择器或CSS选择器列表。还有一些其他参数代表了提取链接的标签、是否去重、链接的处理等内容,使用的频率不高。
- callback:即回调函数,和之前定义Request的callback有相同的意义。每次从link_extractor中获取到链接时,该函数将会调用。该回调函数接收一个response作为其第一个参数,并返回一个包含Item或Request对象的列表。注意,避免使用parse()作为回调函数。由于CrawlSpider使用**parse()方法来实现其逻辑,如果parse()**方法覆盖了,CrawlSpider将会运行失败。
- cb_kwargs:字典,它包含传递给回调函数的参数。
- follow:布尔值,即True或False,它指定根据该规则从response提取的链接是否需要跟进。如果callback参数为None,follow默认设置为True,否则默认为False。
- process_links:指定处理函数,从link_extractor中获取到链接列表时,该函数将会调用,它主要用于过滤。
- process_reque