美文网首页
crawlspider爬虫总结

crawlspider爬虫总结

作者: 小明坐地铁 | 来源:发表于2018-12-09 18:49 被阅读0次

    crawlSpider

    创建 CrawlSpider模板 的代码:

    scrapy genspider -t crawl 爬虫文件 域名
    

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

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

    注意:
    1.如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用。
    2.当编写爬虫规则时,避免使用parse作为回调函数。由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败。

    主要参数:
    allow:满足括号中“正则表达式”的URL会被提取,如果为空,则全部匹配。
    deny:满足括号中“正则表达式”的URL一定不提取(优先级高于allow)。
    allow_domains:会提取的链接的domains。
    deny_domains:一定不会被提取链接的domains。
    restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接

    分布式爬虫

    同样的,RedisCrawlSpider类不需要写start_urls:

    scrapy-redis 一般直接写allowd_domains来指定需要爬取的域,也可以从在构造方法init()里动态定义爬虫爬取域范围(一般不用)。

    必须指定redis_key,即启动爬虫的命令,参考格式:redis_key = 'myspider:start_urls'

    根据指定的格式,start_urls将在 Master端的 redis-cli 里 lpush 到 Redis数据库里,RedisSpider 将在数据库里获取start_urls

    这个RedisCrawlSpider类爬虫继承了RedisCrawlSpider,能够支持分布式的抓取。因为采用的是crawlSpider,所以需要遵守Rule规则,以及callback不能写parse()方法。

    这个爬虫继承了RedisSpider, 它能够支持分布式的抓取,采用的是basic spider,需要写parse函数。 其次就是不再有start_urls了,取而代之的是redis_key,scrapy-redis将key从Redis里pop出来,成为请求的url地址。

    这里只是用到Redis的去重和保存功能,并没有实现分布式

    这个爬虫继承的是CrawlSpider,它是用来说明Redis的持续性,当我们第一次运行dmoz爬虫,然后Ctrl + C停掉之后,再运行dmoz爬虫,之前的爬取记录是保留在Redis里的。

    相关文章

      网友评论

          本文标题:crawlspider爬虫总结

          本文链接:https://www.haomeiwen.com/subject/zuekhqtx.html