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. Oracle 死锁处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错.二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更 ...

  2. 指数循环节&欧拉降幂

    证明:https://www.cnblogs.com/maijing/p/5046628.html 注意使用条件(B的范围) 例题: FZU1759 HDU2837 ZOJ1674 HDU4335

  3. Apache 在不同平台和版本上的默认文件布局

    https://wiki.apache.org/httpd/DistrosDefaultLayout This guide lists the default installation layouts ...

  4. 总结PHP删除字符串最后一个字符的三种方法

    一.前言 从数据库中select()读取一对多的信息时,经常需要将取出的数组用某个特定的字符分割,然后拼接成字符串. 常见的语法格式: foreach ($arr as $key => $val ...

  5. 第五章.MyBatis高级映射

    5.1   新建数据库准备 CREATE TABLE `finacial_products` ( `product_id` ) NOT NULL AUTO_INCREMENT, `name` ) NO ...

  6. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别

    1.ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别 例如你写了一个MyTest类在包com.test.mycode ...

  7. Windows 下制作CentOS7安装U盘

    本文属于另类的U盘制作方法(更多U盘安装见U盘安装CentOS ),如何安装CentOS,请参考<安装指南> 以下列出了,完整的制作步骤: 1.下载安装镜像 选择一个合适的镜像网站,比如网 ...

  8. 构建一个hashmap死锁的DEMO

    package threadmodle; import java.util.HashMap; import java.util.Map; import java.util.UUID; public c ...

  9. IIS中启用CGI来托管PHP和Python网站

    IS中如果要托管PHP和Python的web站点,需要用到CGI来处理HTTP请求,默认情况IIS中是没有CGI模块的,需要在Windows server的服务器管理器(Server Manager) ...

  10. STM32之FSMC

    FSMC全称“静态存储器控制器”. 使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线. (1)当存储数据设为8位时, ...