整站爬虫

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=rItems/), 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行代码下载整站短视频

Python多线程爬虫入门级案例,采集整站图片素材!

整站爬虫

scrapy进阶(CrawlSpider爬虫__爬取整站小说)

使用webpasser抓取某笑话网站整站内容

scrapy按顺序启动多个爬虫代码片段(python3)