整站爬虫
Posted zhoulixiansen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整站爬虫相关的知识,希望对你有一定的参考价值。
目标爬取拉钩:
先进入虚拟环境workon ……
先介绍一个命令
scrapy genspider --list >>> basic crawl csvfeed xmlfeed
如果不指定默认是basic
新建拉勾网的爬虫
scrapy genspider -t crawl lagou www.lagou.com
CrawlSpider是scrapy提供一个通用Spider。在Spider里面,我们可以指定一些爬取规则来实现页面的提取,这些爬取规则由一个专门的数据结构Rule表示。Rule里面包含提取和跟进页面的配置,Spider会根据Rule来确定当前页面中的哪些连接需要继续爬取,哪些页面的爬取结果需要用哪个方法解析等。
rules = ( Rule(LinkExtractor(allow=r‘Items/‘), callback=‘parse_job‘, follow=True), )
实例化类,回调函数就是类的方法名称的字符串形式。
CrawlSpider继承自Spider类。除了Spider类的所有方法和属性,他提供了一个非常重要的属性和方法。
1,rules,他是爬取规则属性,是包含一个或多个Rule对象的列表。每个Rule对爬取网站的动作都做了定义,CrawlSpider会读取rules的每一个Rule并进行解析。
2,parse_start_url(),他是一个可以重写的方法,当start_urls对应的Ruquest得到Response时,该方法被调用,他会分析Response并必须返回Item对象或者Request对象。
这里最重要的内容莫过于Rule的定义了,他的定义和参数如下所示:
class Rule(object): def __init__(self, link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=identity): self.link_extractor = link_extractor self.callback = callback self.cb_kwargs = cb_kwargs or {} self.process_links = process_links self.process_request = process_request if follow is None: self.follow = False if callback else True else: self.follow = follow
以上是关于整站爬虫的主要内容,如果未能解决你的问题,请参考以下文章
python爬虫实战:利用scrapy,短短50行代码下载整站短视频