crawlspider使用

CrawlSpider

它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则Rule来提供跟进链接的方便的机制,从爬取的网页结果中获取链接并继续爬取的工作.

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

  • scrapy genspider -t crawl 爬虫文件 域名

rules

  • CrawlSpider使用rules属性来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎,完成后续的爬取工作。

  • 在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了某种特定操作,比如提取当前相应内容里的特定链接,是否对提取的链接跟进爬取,对提交的请求设置回调函数等。

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

主要参数

LinkExtractor:设置提取链接的规则(正则表达式)
allow=(), : 设置允许提取的目标url
deny=(), : 设置不允许提取的目标url(优先级比allow高)
allow_domains=(), :设置允许提取url的域
deny_domains=(), : 设置不允许提取url的域(优先级比allow_domains高)
restrict_xpaths=(),:根据xpath语法,定位到某一标签下提取链接 
restrict_css=(),:根据css选择器,定位到某一标签下提取链接
unique=True, :如果出现多个相同的url,只会保留一个
strip=True:默认为true,表示去除url首尾空格
link_extractor,:link_extractor对象 
callback=None, :设置回调函数
follow=None, :是否设置跟进
process_links=None, :可以设置回调函数,对所有提取到的url进行拦截
process_request=identity:可以设置回调函数,对request对象进行拦截

如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用

  • LinkExtractors 的目的很简单: 提取链接。

每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象。
LinkExtractors要实例化一次,并且 extract_links 方法会根据不同的 response 调用多次提取链接。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总结一下之前的spider,总的来说,Spider类就是定义了如何爬取某个(或某些)网站。包括了爬取的动作以及如何...
    王小鱼鱻阅读 1,248评论 0 2
  • 前言 最近一直想维护一个代理IP池,在网上找了三十多个免费提供代理IP的网站,想把这些代理都抓取下来存到本地数据库...
    leeyis阅读 1,762评论 1 4
  • 直到去年,我一直以为“南无阿弥陀佛”的“南无”念nán wú,意思是南方没有阿弥陀佛。我其实完全不懂这句话,...
    tommy写作阅读 1,174评论 4 3
  • 金秋十月,哑巴生下一个粉嘟嘟的女孩,全家欢喜。婆婆喜上眉梢,给她取名“喜珍”,可谓喜出望外视若珍宝。 哑巴坐月子期...
    风萧萧兮cynthia阅读 502评论 4 16
  • 讲真,从看完《欢乐颂》那部电视剧我就没追过剧了,最近又追了另一部热剧《放弃我抓紧我》。 起初有看这部剧的念头是因为...
    边走边错阅读 353评论 0 1