Python3网络爬虫开发实战
  • Introduction
  • 0-目录
  • 0.0-前言
  • 0.1-序一
  • 0.3-序二
  • 1-开发环境配置
  • 1.1-Python3的安装
  • 1.2-请求库的安装
  • 1.3-解析库的安装
  • 1.4-数据库的安装
  • 1.5-存储库的安装
  • 1.6-Web库的安装
  • 1.7-App爬取相关库的安装
  • 1.8-爬虫框架的安装
  • 1.9-部署相关库的安装
  • 2-爬虫基础
  • 2.1-HTTP基本原理
  • 2.2-Web网页基础
  • 2.3-爬虫基本原理
  • 2.4-会话和Cookies
  • 2.5-代理基本原理
  • 3-基本库的使用
  • 3.1-使用urllib
  • 3.2-使用requests
  • 3.3-正则表达式
  • 3.4-爬取猫眼电影排行
  • 4-解析库的使用
  • 4.1-XPath的使用
  • 4.2-BeautifulSoup的使用
  • 4.3-pyquery的使用
  • 5-数据存储
  • 5.1-文件存储
  • 5.2-关系型数据库存储
  • 5.3-非关系型数据库存储
  • 6-Ajax数据爬取
  • 6.1-什么是Ajax
  • 6.2-Ajax分析方法
  • 6.3-Ajax结果提取
  • 6.4-分析Ajax爬取今日头条街拍美图
  • 7-动态渲染页面抓取
  • 7.1-Selenium的使用
  • 7.2-Splash的使用
  • 7.3-Splash负载均衡配置
  • 7.4-使用Selenium爬取淘宝商品
  • 8-验证码的识别
  • 8.1-图形验证码的识别
  • 8.2-极验滑动验证码识别
  • 8.3-点触验证码识别
  • 8.4-微博宫格验证码识别
  • 9-代理的使用
  • 9.1-代理的设置
  • 9.2-代理池的维护
  • 9.3-付费代理的使用
  • 9.4-ADSL代理的使用
  • 9.5-使用代理爬取微信公众号文章
  • 10-模拟登录
  • 10.1-模拟登录并爬取GitHub
  • 10.2-Cookies池的搭建
  • 11-APP的爬取
  • 11.1-Charles的使用
  • 11.2-mitmproxy的使用
  • 11.3-mitmdump爬取“得到”App电子书信息
  • 11.4-Appium的使用
  • 11.5-Appium爬取微信朋友圈
  • 11.6-Appium+mitmdump爬取京东商品评论
  • 12-pyspider框架的使用
  • 12.1-pyspider框架介绍
  • 12.2-pyspider基本使用
  • 12.3-pyspider用法详解
  • 13-Scrapy框架的使用
  • 13.1-Scrapy框架介绍
  • 13.2-Scrapy入门
  • 13.3-Selector的用法
  • 13.4-Spider的用法
  • 13.5-Downloader Middleware的用法
  • 13.6-Spider Middleware的用法
  • 13.7-Item Pipeline的用法
  • 13.8-Scrapy对接Selenium
  • 13.9-Scrapy对接Splash
  • 13.10-Scrapy通用爬虫
  • 13.11-Scrapyrt的使用
  • 13.12-Scrapy对接Docker
  • 13.13-Scrapy爬取新浪微博
  • 14-分布式爬虫
  • 14.1-分布式爬虫理念
  • 14.2-Scrapy-Redis源码解析
  • 14.3-Scrapy分布式实现
  • 14.4-Bloom Filter的对接
  • 15-分布式爬虫的部署
  • 15.1-Scrapyd分布式部署
  • 15.2-Scrapyd-Client的使用
  • 15.3-Scrapyd对接Docker
  • 15.4-Scrapyd批量部署
  • 15.5-Gerapy分布式管理
Powered by GitBook
On this page
  • 1. pyspider 基本功能
  • 2. 与 Scrapy 的比较
  • 3. pyspider 的架构
  • 4. 结语

Was this helpful?

12.1-pyspider框架介绍

Previous12-pyspider框架的使用Next12.2-pyspider基本使用

Last updated 5 years ago

Was this helpful?

pyspider 是由国人 binux 编写的强大的网络爬虫系统,其 GitHub 地址为

pyspider 带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,它支持多种数据库后端、多种消息队列、JavaScript 渲染页面的爬取,使用起来非常方便。

1. pyspider 基本功能

我们总结了一下,PySpider 的功能有如下几点。

  • 提供方便易用的 WebUI 系统,可以可视化地编写和调试爬虫。

  • 提供爬取进度监控、爬取结果查看、爬虫项目管理等功能。

  • 支持多种后端数据库,如 MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL。

  • 支持多种消息队列,如 RabbitMQ、Beanstalk、Redis、Kombu。

  • 提供优先级控制、失败重试、定时抓取等功能。

  • 对接了 PhantomJS,可以抓取 JavaScript 渲染的页面。

  • 支持单机和分布式部署,支持 Docker 部署。

如果想要快速方便地实现一个页面的抓取,使用 pyspider 不失为一个好的选择。

2. 与 Scrapy 的比较

后面会介绍另外一个爬虫框架 Scrapy,我们学习完 Scrapy 之后会更容易理解此部分内容。我们先了解一下 pyspider 与 Scrapy 的区别。

  • pyspider 提供了 WebUI,爬虫的编写、调试都是在 WebUI 中进行的,而 Scrapy 原生是不具备这个功能的,采用的是代码和命令行操作,但可以通过对接 Portia 实现可视化配置。

  • pyspider 调试非常方便,WebUI 操作便捷直观,在 Scrapy 中则是使用 parse 命令进行调试,论方便程度不及 pyspider。

  • pyspider 支持 PhantomJS 来进行 JavaScript 渲染页面的采集,在 Scrapy 中可以对接 ScrapySplash 组件,需要额外配置。

  • PySpide r 中内置了 PyQuery 作为选择器,在 Scrapy 中对接了 XPath、CSS 选择器和正则匹配。

  • pyspider 的可扩展程度不足,可配制化程度不高,在 Scrapy 中可以通过对接 Middleware、Pipeline、Extension 等组件实现非常强大的功能,模块之间的耦合程度低,可扩展程度极高。

如果要快速实现一个页面的抓取,推荐使用 pyspider,开发更加便捷,如快速抓取某个普通新闻网站的新闻内容。如果要应对反爬程度很强、超大规模的抓取,推荐使用 Scrapy,如抓取封 IP、封账号、高频验证的网站的大规模数据采集。

3. pyspider 的架构

pyspider 的架构主要分为 Scheduler(调度器)、Fetcher(抓取器)、Processer(处理器)三个部分,整个爬取过程受到 Monitor(监控器)的监控,抓取的结果被 Result Worker(结果处理器)处理,如图 12-1 所示。

图 12-1 pyspider 架构图

Scheduler 发起任务调度,Fetcher 负责抓取网页内容,Processer 负责解析网页内容,然后将新生成的 Request 发给 Scheduler 进行调度,将生成的提取结果输出保存。

pyspider 的任务执行流程的逻辑很清晰,具体过程如下所示。

  • 每个 pyspider 的项目对应一个 Python 脚本,该脚本中定义了一个 Handler 类,它有一个 on_start() 方法。爬取首先调用 on_start() 方法生成最初的抓取任务,然后发送给 Scheduler 进行调度。

  • Scheduler 将抓取任务分发给 Fetcher 进行抓取,Fetcher 执行并得到响应,随后将响应发送给 Processer。

  • Processer 处理响应并提取出新的 URL 生成新的抓取任务,然后通过消息队列的方式通知 Schduler 当前抓取任务执行情况,并将新生成的抓取任务发送给 Scheduler。如果生成了新的提取结果,则将其发送到结果队列等待 Result Worker 处理。

  • Scheduler 接收到新的抓取任务,然后查询数据库,判断其如果是新的抓取任务或者是需要重试的任务就继续进行调度,然后将其发送回 Fetcher 进行抓取。

  • 不断重复以上工作,直到所有的任务都执行完毕,抓取结束。

  • 抓取结束后,程序会回调 on_finished() 方法,这里可以定义后处理过程。

4. 结语

本节我们主要了解了 pyspider 的基本功能和架构。接下来我们会用实例来体验一下 pyspider 的抓取操作,然后总结它的各种用法。

https://github.com/binux/pyspider,官方文档地址为
http://docs.pyspider.org/。