通用爬虫

主要时通过继承 CrawlSpider, 定义一些爬去的规则来实现页面的提取

CrawlSpider

  • 它继承自 Spider 类,除了spider的所有方法和属性之外,它还提供了几个特殊的属性

rules

  • 爬取的规则,包含一个或者多个Rule的对象的列表,每个 Rule 对爬取网站的动作都做了定义

parse_start_url

  • 它时一个可以重写的方法,当start_urls里对应的Request得到Response时,该方法被调用,它会分析Response并返回Item对象或者Request对象

定义rule时的参数

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

link_extractor:

  • 定义爬虫需要爬去的链接,时LinkExtractor对象

callback:

  • 回调函数,应该避免使用parse()函数作为回掉,避免覆盖原函数

cb_kwargs:

  • 字典,它包含传递给回掉函数的参数

follow:

  • 布尔值,即True或False,它指定根据该规则从Response提取的链接是否需要跟进,如果callback参数为None,follow默认设置为True,否则默认是False

process_links:

  • 指定处理函数,从link_extractor中获取到链接列表时,该函数会调用

process_request:

  • 指定处理函数,根据Rule提取到每个Request时,该函数将会调用,对Request进行处理,该函数必须返回Resquest或者None

Item Loader 提取item

  • 提供一种便捷的方法机制来帮助我们方便的提取Item

  class scrapy.loader.ItemLoader([item, selector, response, ] **kwargs)

item:

  • 时 Item 对象,可以调用 add_xpath()、add_css、add_value()等方法来填充Item对象

selector:

  • Selector对象,用来提取填充数据的选择器

response

  • Response对象,用于构建选择器的 Response

例如:

  ​from scrapy.loader import ItemLoaderfrom project.items import Product​def parse(self, response):loader = ItemLoader(item=Product(), response=response)loader.add_xpath('name', '//div[@class="name"]')loader.add_css("stock", 'p#stock')loader.add_value('last_updated', 'today')return loader.load_item()

ItemLoader每个字段都可以包含一个Input Process和Output Process 输入输出处理器,Input Process 收到数据时会立刻对数据进行处理,并保存在itemloader中,当所有数据收集完后,调用load_item方法填充item对象,调用时会先调用Output Processor来处理之前收集的数据,再存入Item中

Processor

  • Identity:不处理,返回元数据

  • TakeFirst: 返回列表的第一个非空值

  • Join:拼接,类似字符串的拼接,默认使用空格,也可以自定义拼接方法

  • Compose:处理字符串,用给定的多个函数处理,依次会经过每个函数处理,如:Compose(str.upper, lambda s: s.strip())

  • MapCompose:迭代处理结果的列表,其他和 Compose相同

  • SelectJmes:可以查询 Json,传入值为 Key,返回 value pip install jmespath

Scrapy通用爬虫相关推荐

  1. Python爬虫——Scrapy通用爬虫

    大家好,我是霖hero 除了钱,大家还比较喜欢什么?当然是全能.万能和通用的人或事物啦,例如:全能.什么都会的员工.万能钥匙.通用爬虫等等.今天我们学习Scrapy通用爬虫,利用Scrapy通用爬虫来 ...

  2. python 下载文件 限速-Python网络爬虫---scrapy通用爬虫及反爬技巧

    一.通用爬虫 通用爬虫一般有以下通用特性:爬取大量(一般来说是无限)的网站而不是特定的一些网站. 不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的.相反,其会限制爬取的时间及数量. ...

  3. Scrapy 通用爬虫爬取广西人才网数据记录(上,企业信息)

    2019独角兽企业重金招聘Python工程师标准>>> 背景 这一次的通用爬虫跟以往默认的spider不一样,它的爬取可以通过正则将范围扩大,而且它也不注重那么细的内容,能爬尽量爬. ...

  4. scrapy 用爬虫规则指定爬行轨迹自动抓取

    需求 给定爬虫起始地址,爬行路径,获得目标页的指定内容 约定路径 起点首页 --> (历史)频道 --> 小说info页–> 章节详情起始页 --> 作者中心 --> 大 ...

  5. Python 通用爬虫 和讯博客 scrapy

    目标站点需求分析 通用爬虫,获取和讯博客所有博文 涉及的库 scrapy,re,requests,mysql URL RULE 解析单页源码 保存到数据库 结果 转载于:https://www.cnb ...

  6. Scrapy框架实战(五):通用爬虫 CrawlSpider

    目录 1. CrawlSpider 2. Item Loader 3. 基本使用 前面几个小节已经讲解的爬虫都是抓取一个或几个页面,然后分析页面中的内容,这种爬虫可以称为专用爬虫,通常是用来抓取特定页 ...

  7. 爬虫(一):爬虫的基础知识 ---通用爬虫和聚焦爬虫,http和https协议,常见的响应状态码

    一.爬虫的定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 二.爬虫可以解决的问题 解决冷启动问题 搜索引擎的根基. -通用爬虫 帮助机器学习建立知识图谱 制作各种比价软件 三 ...

  8. Scrapy分布式爬虫打造搜索引擎 - (三)知乎网问题和答案爬取

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 推荐前往我的个人博客进行阅读:http://blog.mtiany ...

  9. python分布式爬虫框架_python之简单Scrapy分布式爬虫的实现

    分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度. 在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queu ...

最新文章

  1. PyTorch框架:(5)使用PyTorch框架构建卷积神经网络
  2. VC++程序开机自启动(注册表上注册)
  3. WebService中因 URL 意外地以“/******”结束,请求格式无法识别。
  4. Asya And Kittens
  5. 动手动脑,产生随机数
  6. 字符和编码之间的转换(Python)
  7. 9、mybatis中动态sql的使用
  8. mac给服务器传送文件
  9. Node-介绍与模块化
  10. Android 中AlarmManager升级4.2
  11. IAR中路由器、协调器、终端的配置区别
  12. 【笔记】underfined和null
  13. HHUOJ 1002 弟弟的作业(水题)
  14. 洛谷-P1424-小鱼的航程
  15. c++ opencv (学习笔记)inRange函数
  16. cocos2d关于延时的实现
  17. mldonkey系列之三──Ini文件[zt]
  18. PAT乙级 1052 卖个萌 (0/20 分) Java 未实现
  19. 阿里cai鸟一二三面+HR面
  20. 奥克兰oracle,IEM奥克兰前瞻: 顶级战队决战甲骨文中心

热门文章

  1. 货币转换 I----Python
  2. AES-128加密解密方式(逐步更新)
  3. coco2017数据集高速下载地址
  4. ublox TMOD2
  5. STM IIC库函数
  6. 基于Web的网络在线考试系统
  7. chrome开发人员工具中出现绿色的矩形框解决
  8. 如何开发一个浏览器插件
  9. flash chart(amCharts的破解)
  10. MAC运行软件后出现意外退出及崩溃的修复方法