Scrapy通用爬虫
通用爬虫
主要时通过继承 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 Productdef 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通用爬虫相关推荐
- Python爬虫——Scrapy通用爬虫
大家好,我是霖hero 除了钱,大家还比较喜欢什么?当然是全能.万能和通用的人或事物啦,例如:全能.什么都会的员工.万能钥匙.通用爬虫等等.今天我们学习Scrapy通用爬虫,利用Scrapy通用爬虫来 ...
- python 下载文件 限速-Python网络爬虫---scrapy通用爬虫及反爬技巧
一.通用爬虫 通用爬虫一般有以下通用特性:爬取大量(一般来说是无限)的网站而不是特定的一些网站. 不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的.相反,其会限制爬取的时间及数量. ...
- Scrapy 通用爬虫爬取广西人才网数据记录(上,企业信息)
2019独角兽企业重金招聘Python工程师标准>>> 背景 这一次的通用爬虫跟以往默认的spider不一样,它的爬取可以通过正则将范围扩大,而且它也不注重那么细的内容,能爬尽量爬. ...
- scrapy 用爬虫规则指定爬行轨迹自动抓取
需求 给定爬虫起始地址,爬行路径,获得目标页的指定内容 约定路径 起点首页 --> (历史)频道 --> 小说info页–> 章节详情起始页 --> 作者中心 --> 大 ...
- Python 通用爬虫 和讯博客 scrapy
目标站点需求分析 通用爬虫,获取和讯博客所有博文 涉及的库 scrapy,re,requests,mysql URL RULE 解析单页源码 保存到数据库 结果 转载于:https://www.cnb ...
- Scrapy框架实战(五):通用爬虫 CrawlSpider
目录 1. CrawlSpider 2. Item Loader 3. 基本使用 前面几个小节已经讲解的爬虫都是抓取一个或几个页面,然后分析页面中的内容,这种爬虫可以称为专用爬虫,通常是用来抓取特定页 ...
- 爬虫(一):爬虫的基础知识 ---通用爬虫和聚焦爬虫,http和https协议,常见的响应状态码
一.爬虫的定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 二.爬虫可以解决的问题 解决冷启动问题 搜索引擎的根基. -通用爬虫 帮助机器学习建立知识图谱 制作各种比价软件 三 ...
- Scrapy分布式爬虫打造搜索引擎 - (三)知乎网问题和答案爬取
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 推荐前往我的个人博客进行阅读:http://blog.mtiany ...
- python分布式爬虫框架_python之简单Scrapy分布式爬虫的实现
分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度. 在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queu ...
最新文章
- PyTorch框架:(5)使用PyTorch框架构建卷积神经网络
- VC++程序开机自启动(注册表上注册)
- WebService中因 URL 意外地以“/******”结束,请求格式无法识别。
- Asya And Kittens
- 动手动脑,产生随机数
- 字符和编码之间的转换(Python)
- 9、mybatis中动态sql的使用
- mac给服务器传送文件
- Node-介绍与模块化
- Android 中AlarmManager升级4.2
- IAR中路由器、协调器、终端的配置区别
- 【笔记】underfined和null
- HHUOJ 1002 弟弟的作业(水题)
- 洛谷-P1424-小鱼的航程
- c++ opencv (学习笔记)inRange函数
- cocos2d关于延时的实现
- mldonkey系列之三──Ini文件[zt]
- PAT乙级 1052 卖个萌 (0/20 分) Java 未实现
- 阿里cai鸟一二三面+HR面
- 奥克兰oracle,IEM奥克兰前瞻: 顶级战队决战甲骨文中心