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框架的更多相关文章

  1. Python 爬虫十六式 - 第二式:urllib 与 urllib3

    Python请求标准库 urllib 与 urllib3 学习一时爽,一直学习一直爽!   大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了什么是HTTP协议,那么这一次我们就要动 ...

  2. Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery

    PyQuery:一个类似jquery的python库 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 BeautifulSoup 美味 ...

  3. Python 爬虫十六式 - 第七式:正则的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...

  4. Python 爬虫十六式 - 第五式:BeautifulSoup-美味的汤

    BeautifulSoup 美味的汤 学习一时爽,一直学习一直爽!    Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 Xpath 的使用方法.Xpath 我觉得还是 ...

  5. Python爬虫十六式 - 第四式: 使用Xpath提取网页内容

    Xpath:简单易用的网页内容提取工具 学习一时爽,一直学习一直爽 !   Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 requests 的使用方法.到上节课为止, ...

  6. Python爬虫十六式 - 第三式:Requests的用法

    Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...

  7. Python 爬虫十六式 - 第一式:HTTP协议

    HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽!   Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...

  8. 爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline

    1. Spider Middleware Spider Middleware是介入到Scrapy的Spider处理机制的钩子框架. 当Downloader生成Response之后,Response会被 ...

  9. python爬虫入门(六) Scrapy框架之原理介绍

    Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...

  10. selenium-webdriver(python) (十六) --unittest 框架

    学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...

随机推荐

  1. Sandworm Attack小结

    这个漏洞刚出来时就分析过,当时大致弄明白了原理,但对很多细节和原理还是一知半解.后来开始找工作……今天终于有时间来把欠的这部分功课补上. 这个漏洞网上的各种中英文分析已经很多了,因此这里我只根据自己的 ...

  2. nginx的一些文章

    [译] Nginx如何做流量控制 https://legolasng.github.io/2017/08/27/nginx-rate-limiting/ Nginx特性及原理介绍 http://www ...

  3. February 6 2017 Week 6 Monday

    There are no shortcuts to any place worth going. 任何值得去的地方,都没有捷径. Several years ago, I climbed the Hu ...

  4. C# 之 Request

    Request.QueryString(取得地址栏参数值)获取地址栏中的参数,意思就是取得”?"号后面的参数值.如果是多个是用这”&”符号连接起来的.Request.form取得表单 ...

  5. UVa 1636 - Headshot(概率)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. C++禁止使用拷贝构造函数和赋值运算符方法

    1.将拷贝构造函数和赋值运算符声明为私有,并不予实现 class Uncopyable { private: Uncopyable(const Uncopyable &); // 阻止copy ...

  7. node里有没有清理require和dependencies的工具

    写node的时候,常常以为自己需要某个package,于是require了一下,结果写着写着,又没有用到,安装了某个包save了一下,最后也没用到. 一个项目写完发现整个require和depende ...

  8. Qgis 里的Python脚本介绍

    QGIS 入门演示之<用 QGIS 画矢量交通路线图> 脚本编程之准备知识<Python 教程> QGIS API QGIS插件库 运行QGIS脚本,对于桌面应用来讲有4种方式 ...

  9. springboot启动报错:Could not resolve placeholder

    SpringBoot1.5,项目启动报错: Could not resolve placeholder 很明显是找不到配置文件引起的,查看配置文件目录结构如下: 很正常呀. 完全可以加载applica ...

  10. Unity透明视频播放 所需的Shader脚本

    Shader "Custom/ShaderMovie" { Properties { _MainTex("Color (RGB)", 2D) = "b ...