首页 > 其他 > 详细

整站爬虫

时间:2018-11-27 21:30:14      阅读:197      评论:0      收藏:0      [点我收藏+]

目标爬取拉钩:

技术分享图片

先进入虚拟环境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

 

整站爬虫

原文:https://www.cnblogs.com/zhoulixiansen/p/10029050.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!