Python3爬虫(十六) pyspider框架
Infi-chu:
http://www.cnblogs.com/Infi-chu/
一、pyspider介绍
1.基本功能
提供WebUI可视化功能,方便编写和调试爬虫
提供爬取进度监控、爬取结果查看、爬虫项目管理
支持多种数据库,MySQL、MongoDB、Redis、SQLite、PostgreSQL等
支持多种消息队列,RabbitMQ、Beanstalk、Redis等
提供优先级控制、失败重试、定时抓取等
对接了PhantomJS,可实现对JavaScript页面的抓取
支持单机、分布式、Docker部署
2.pyspider 与 scrapy 对比
pyspider提供WebUI,scrapy原生不具备此功能
pyspider调试方便
pyspider支持PhantomJS、scrapy支持scrapy-Splash组件
pyspider内置pyquery作为选择器,scrapy对接了XPath、CSS选择器和正则表达式
pyspider扩展程度低
3.框架设计
三大模块:调度器(Scheduler)、抓取器(Fetcher)、处理器(Processer)
4.具体流程
1.每个pyspider项目都对用一个Python脚本,该脚本定义了一个Handler类,使用on_start()方法,开始项目,然后交由scheduler进行调度处理
2.Scheduler将抓取任务传给Fetcher,Fetcher响应完成后,将响应传给Processer
3.Processer处理并提取新的URL再通过消息队列的方式传给Scheduler,如果生成了新的提取结果,则发往结果队列等待Result Worker处理
4.循环上述过程,直到抓取结束,结束时会调用on_finished()
5.例子
https://github.com/Infi-chu/quna
二、pyspider详解
1.启动:
pyspider all
2.crawl()方法
url:爬取的URL,可以定义为单个URL字符串或URL列表
callback:回调函数,指定了该URL对应的响应内容应该由哪个方法来解析
age:任务的有效时间
priority:优先级,默认为0,越大越优先
exetime:可以设置定时任务,其值是时间戳,默认是0,代表立即执行
retries:重试次数,默认是3
itag:设置判定网页是否发生变化的节点值
auto_recrawl:开启后,爬取任务在过期后重新执行
method:HTTP请求方式
params:定义GET请求参数
data:定义POST请求参数
files:上传的文件,需指定文件名
user_agent:User-Agent
headers:Request Headers
cookies:Cookies,字典格式
connect_timeout:初始化连接时最长的等待时间,默认是20秒
timeout:抓取网页的最长等待时间,默认是120秒
allow_redirects:确定是否自动处理重定向,默认是True
validate_cert:是否验证证书,默认是True
proxy:代理
fetch_type:开启PhantomJS渲染
js_script:页面加载完毕后执行的JavaScript脚本
js_run_at:脚本运行位置,默认在节点结尾
js_viewport_width/js_viewport_height:JavaScript渲染页面的窗口大小
load_images:确定是否加载图片,默认是False
save:在不同的方法之间传递参数
cancel:取消任务
force_update:强制更新状态
3.任务区分:
判断是否为同一任务,将比较URL的MD5值是否一样
4.全局配置:
在crawl_config中指定全局配置
5.定时爬取
通过every属性来设置时间间隔
6.项目状态:
TODO 刚创建还未执行
STOP 停止
CHECKING 运行的项目被修改后
DEBUG/RUNNNING 运行
PAUSE 多次出错,挂起或暂停
7.删除项目
将状态设置为STOP,分组名称修改为delete,24小时后自动删除
Python3爬虫(十六) pyspider框架的更多相关文章
- Python 爬虫十六式 - 第二式:urllib 与 urllib3
Python请求标准库 urllib 与 urllib3 学习一时爽,一直学习一直爽! 大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了什么是HTTP协议,那么这一次我们就要动 ...
- Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
PyQuery:一个类似jquery的python库 学习一时爽,一直学习一直爽 Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 BeautifulSoup 美味 ...
- Python 爬虫十六式 - 第七式:正则的艺术
RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽 Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...
- Python 爬虫十六式 - 第五式:BeautifulSoup-美味的汤
BeautifulSoup 美味的汤 学习一时爽,一直学习一直爽! Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 Xpath 的使用方法.Xpath 我觉得还是 ...
- Python爬虫十六式 - 第四式: 使用Xpath提取网页内容
Xpath:简单易用的网页内容提取工具 学习一时爽,一直学习一直爽 ! Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 requests 的使用方法.到上节课为止, ...
- Python爬虫十六式 - 第三式:Requests的用法
Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽 Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...
- Python 爬虫十六式 - 第一式:HTTP协议
HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽! Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...
- 爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline
1. Spider Middleware Spider Middleware是介入到Scrapy的Spider处理机制的钩子框架. 当Downloader生成Response之后,Response会被 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...
- selenium-webdriver(python) (十六) --unittest 框架
学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...
随机推荐
- C/C++文件读取
https://blog.csdn.net/stpeace/article/details/12404925
- Hadoop学习---Hadoop的MapReduce的原理
MapReduce的原理 MapReduce的原理 NameNode:存放文件的元数据信息 DataNode:存放文件的具体内容 ResourceManager:资源管理,管理内存.CPU等 Node ...
- 转:Recsys2013论文导读
月中在香港参加recsys2013会议,文章不少,对我有价值的并不算多,再跟目前工作相关的就更少了.这里过滤了几篇我觉得比较有意思的文章,加上了自己的理解,作为导读. A Fast Parallel ...
- How to update BOL entity property value via ABAP code
Suppose I have one product with ID I042416 which could be found in CRM WebClient UI: I would like to ...
- 我的第一个Python随笔
自学Python也很长时间了,注册博客园写了第一篇随笔.之前想过很多次,但是始终不知道该怎么开始,内容如何,现在想想,随笔嘛,是自己的想法,也自己的实践,又是自己的锻炼.话不多说,开始今天的正式内容. ...
- 关于TCHAR和string对象的c.str()一些注意事项
1.TCHAR 根据预处理器的设置,如果是_MBCS, 那么TCHAR = char: 如果 如果设置的是UNICODE和_UNICODE,那么TCHAR=wchar_t.就等于根据当前环境会选择不同 ...
- java动态代理的实现以及原理
1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...
- 人类主动探索地外文明(METI)活动正在进行中
请看下图: 这是位于俄罗斯克里米亚境内的行星际深空通讯雷达(口径70米,2-300GHz,建造于1978年)的外观.借助该雷达的强大发射功率,有关国际 ...
- 【[NOI2016]区间】
发现自己的离散化姿势一直有问题 今天终于掌握了正确的姿势 虽然这并不能阻挡我noip退役爆零的历史进程 还是先来看看离散化怎么写吧,我以前都是这么写的 for(std::set<int>: ...
- SSH 与 SSL
关于 ssh 有人已经总结得非常好了,这里推荐大家看下 阮一峰 写的 ssh原理与应用 写得简单易懂,非常赞. 关于 ssl 这里有一篇博文写得也不错,ssl协议详解 好了,那 ssh 和 ssl ...