zoukankan      html  css  js  c++  java
  • 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小时后自动删除

  • 相关阅读:
    (转)关于IBM小机P520的面板使用
    (转)mysql的sql_mode合理设置
    (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优
    杨辉三角
    异或的陷阱(转)
    通过数组看栈堆
    数组的一些知识点和插入选择冒泡排序
    运算符
    Java的变量相关
    有符号的数据表示法(原、反、补)
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/8998042.html
Copyright © 2011-2022 走看看