Scrapy框架中CrawlSpider类是什么

  介绍

这篇文章将为大家详细讲解有关Scrapy框架中CrawlSpider类是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强> CrawlSpider类

通过下面的命令可以快速创建CrawlSpider模板的代码:

scrapy  genspider  -t  crawl  tencent  tencent.com

CrawSpider是蜘蛛的派生类、蜘蛛类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(规则)来提供跟进链接的方便的机制,从爬取的网页中获取链接并继续爬取的工作更适合。

<强> CrawSpider源码详细解析

class  CrawlSpider(蜘蛛):   ,,,rules =, ()   ,,,def  __init__(自我,,*,,* *千瓦):   ,,,,,,,超级(CrawlSpider,,自我). __init__(*,, * *千瓦)   ,,,,,,,self._compile_rules ()   ,,,#首先调用parse()来处理start_urls中返回的反应对象   ,,,# parse()则将这些反应对象传递给了_parse_response()函数处理,并设置回调函数为parse_start_url ()   ,,,#设置了跟进标志位正确   ,,,#解析将返回项和跟进了的请求对象,,,,   ,,,def 解析(自我,,反应):   ,,,,,,,return  self._parse_response(反应,self.parse_start_url,, cb_kwargs={},遵循=True)   ,,,#处理start_url中返回的反应,需要重写   ,,,def  parse_start_url(自我,,反应):   ,,,,,,,return  []   ,,,def  process_results(自我,,反应,结果):   ,,,,,,,return 结果   ,,,#从响应中抽取符合任一用户定义& # 39;规则& # 39;的链接,并构造成Resquest对象返回   ,,,def  _requests_to_follow(自我,,反应):   ,,,,,,,if  not  isinstance(反应,HtmlResponse):   ,,,,,,,,,,,回来   ,,,,,,,seen =, ()   ,,,,,,,#抽取之内的所有链接,只要通过任意一个& # 39;规则& # 39;,即表示合法   ,,,,,,,for  n, rule 拷贝列举(self._rules):   ,,,,,,,,,,,links =, (l  for  l 拷贝rule.link_extractor.extract_links(反应),if  l  not 拷贝看到)   ,,,,,,,,,,,#使用用户指定的process_links处理每个连接   ,,,,,,,,,,,if  links 以及rule.process_links:   ,,,,,,,,,,,,,,,links =, rule.process_links(链接)   ,,,,,,,,,,,#将链接加入看到集合,为每个链接生成请求对象,并设置回调函数为_repsonse_downloaded ()   ,,,,,,,,,,,for  link 拷贝链接:   ,,,,,,,,,,,,,,,seen.add(链接)   ,,,,,,,,,,,,,,,#构造请求对象,并将规则规则中定义的回调函数作为这个请求对象的回调函数   ,,,,,,,,,,,,,,,r =,请求(url=link.url,回调=self._response_downloaded)   ,,,,,,,,,,,,,,,r.meta.update(规则=n, link_text=link.text)   ,,,,,,,,,,,,,,,#对每个请求调用process_request()函数。该函数默认为校正,即不做任何处理,直接返回该请求。   ,,,,,,,,,,,,,,,油品收率rule.process_request(右)   ,,,#处理通过规则提取出的连接,并返回项目以及请求   ,,,def  _response_downloaded(自我,,反应):   ,,,,,,,rule =, self._rules [response.meta[& # 39;规则# 39;]]   ,,,,,,,return  self._parse_response (rule.callback,反应,还以为,rule.cb_kwargs, rule.follow)   ,,,#解析反应对象,会用回调解析处理他,并返回请求或项目对象   ,,,def  _parse_response(反应,自我,还以为,回调,cb_kwargs,,遵循=True):   ,,,,,,,#首先判断是否设置了回调函数。(该回调函数可能是规则中的解析函数,也可能是,parse_start_url函数)   ,,,,,,,#如果设置了回调函数(parse_start_url()),那么首先用parse_start_url()处理反应对象,   ,,,,,,,#然后再交给process_results处理。返回cb_res的一个列的表   ,,,,,,,if 回调:   ,,,,,,,,,,,#如果是解析调用的,则会解析成请求对象   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Scrapy框架中CrawlSpider类是什么