Scrapy-Spider

 CrawlSpider

  CrawlSpider类  

  CrawlSpider类常用于爬取一般的网站,其定义了一些规则(rule)来提供跟进链接的功能,使用非常方便。处理从Spider继承过来的属性外,还提供了一个新的属性ruels,该属性是一个过多个Rule对象的元组(list),每个Rule都对爬取网站的动作定义了特定的规则。如果多个Rule匹配了相同的链接,则根据它们在rules属性中被定义的顺序,第一个会被使用。CrawlSpider也提供了一个可复写的方法parse_start_url(response),当start_urls的请求返回时,该方法被调用。该方法分析最初的响应,返回一个Item对象或者一个Reqeust对象或者一个可迭代的包含二者的对象。

  爬取规则Rule 

class scrapy.contrib.spiders.Rule(link_extractor,callback=None,cb_kwargs=None, follow=None, process_links=None, process_request=None)

  构造参数说明:
    □ link_extractor : 是一个LinkExtractor对象,其定义了如何从爬取到的页面提取链接。
    □ callback : 是一个callable 或 string,该spider中与string同名的函数将被调用。每次从link_extactor中获取到链接时将会调用该函数。该函数接收一个response最为第一个参数,并返回Item或Request对象。当编写爬虫规则时,应避免使用parse最为回调函数。由于CrawlSpider使用parse方法来实现其逻辑,如果您覆盖了parse方法,crawlspider将会运行失败。
    □ cb_kwargs : 包含传递给回调函数的参数(keyword argument)的字典。
    □ follow :是一个布尔值,指定了改规则从response提取的链接是否需要跟进。如果callback为None,follow默认设置为True,否则为False。
    □ process_links : 是一个callable或string(该spider中同名的函数将会被调用)。从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。
    □ process_request:是一个callable或string(该spider中同名的函数将会被调用)。该规则提取到每个reqeust是都会调用该函数。该函数必须返回一个request会None。(用来过滤request)

  LinkExtractor对象

    LinkExtractor对象的构造,用来产生过滤规则。LinkExtractor常用的参数有:
    □ allow : 提取满足正则表达式的链接。
    □ deny : 排除正则表达式匹配的链接,优先级高于allow。
    □ allow_domains : 允许的域名,可以是str或list。
    □ deny_domains : 排除的域名,可以是str或list。
    □ restrict_xpaths : 提取满足XPath选择条件的链接,可以是str或list。
    □ restrict_css : 提取满足CSS选择条件的链接,可以是str或list。
    □ tags : 提取指定标记下的链接,默认从a和area中提取,可以是str或list。
    □ unique : 链接是否去重,类型为Boolean。
    □ process_value : 值处理函数,优先级大于allow。

  rules属性中即使只有一个Rule实例,后面也要用逗号 “ , ” 分隔。

posted @ 2018-07-01 21:53  doitjust  阅读(139)  评论(0编辑  收藏  举报