Scrapy笔框架--通用爬虫Broad Crawls(中)
2018-07-13 本文已影响0人
中乘风
rules = (
Rule(LinkExtractor(allow=r'WebPage/Company.*'),follow=True,callback='parse_company'),
Rule(LinkExtractor(allow=r'WebPage/JobDetail.*'), callback='parse_item', follow=True),
)
Rule的参数用法
跟踪Rule代码看它的参数:
link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=identity
- link_extractor完成url的抽取,它就是交给CrawlSpider用
- callback是回调函数
- cb_kwargs是传递给link_extractor的参数
- follow的意思是满足Rule规则的url是否跟进
- process_links在Scrapy笔记--通用爬虫Broad Crawls(上)里面有代码演示,主要处理url
- process_request可以对request进行预处理,就像process_links处理url一样,编写一个函数方法进行处理
LinkExtrator的参数用法,跟踪代码看参数:
allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths=(),
tags=('a', 'area'), attrs=('href',), canonicalize=False,
unique=True, process_value=None, deny_extensions=None, restrict_css=(),
strip=True
- allow=(r'/jobs/\d+.html')中放置的是一个正则表达式,如果你满足正则,就对其进行提取
- deny是allow的反向
- allow_domains=('www.lagou.com')是指在指定域名www.lagou.com下的才进入处理
- deny_domains是allow_domains的反向
restrict_xpaths、restrict_css可以通过xpath或者css进一步限定url,比如当前页面有很多符合条件的url,但是我希望限定某个范围进行取值,则可以通过它来指定范围区域,如:
restrict_css('.jon-info')
是限定
<div class=jon-info>中间的范围</div>
- tags=('a', 'area'), attrs=('href',)是指默认通过a标签和area标签找到里面的href