c爬虫抓取网页数据(2021-07-09pyspider框架介绍框架Scrapy)

优采云 发布时间: 2022-02-07 21:07

  c爬虫抓取网页数据(2021-07-09pyspider框架介绍框架Scrapy)

  2021-07-09

  pyspider框架介绍

  pyspider是中文binux编写的强大的网络爬虫系统,它的GitHub地址是,官方文档地址是。

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

  pyspider基本功能

  我们将 PySpider 的功能总结如下。

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

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

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

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

  提供优先级控制、故障重试、定时捕捉等功能。

  使用 PhantomJS,您可以抓取由 JavaScript 呈现的页面。

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

  如果你想快速轻松地爬取一个页面,使用 pyspider 是一个不错的选择。

  与 Scrapy 的比较

  Scrapy,另一个爬虫框架,后面会介绍。学习了 Scrapy 之后,这部分就更容易理解了。我们先来了解一下pyspider和Scrapy的区别。

  pyspider 提供 WebUI。爬虫的编写和调试都是在WebUI中进行的,而Scrapy原生没有这个功能。它使用代码和命令行操作,但可以连接到 Portia 以实现可视化配置。

  pyspider的调试非常方便,WebUI的操作方便直观。在 Scrapy 中,使用 parse 命令进行调试,不如 pyspider 方便。

  pyspider 支持 PhantomJS 在 JavaScript 采集 中渲染页面,并且 ScrapySplash 组件可以停靠在 Scrapy 中,这需要额外的配置。

  PyQuery 作为选择器内置在 PySpider 中,XPath、CSS 选择器和正则匹配都停靠在 Scrapy 中。

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

  如果想快速抓取一个页面,推荐使用pyspider,开发比较方便,比如快速抓取一个普通新闻网站的新闻内容。如果要处理非常*敏*感*词*的抓取,反爬度很强,建议使用Scrapy,比如对网站的*敏*感*词*数据采集的被封IP、被封账号进行抓取, 和高频验证。

  pyspider的架构

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

  

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

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

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

  Scheduler 将抓取任务分发给 Fetcher 进行抓取,Fetcher 执行并获取响应,然后将响应发送给 Processor。

  Processer处理响应并提取新的URL生成新的爬虫任务,然后通过消息队列通知Schduler当前的爬虫任务执行状态,并将新生成的爬虫任务发送给Scheduler。如果生成了新的 fetch 结果,则将其发送到结果队列中,由 Result Worker 处理。

  Scheduler接收到一个新的抓取任务,然后查询数据库,判断是新的抓取任务还是需要重试的任务,然后继续调度,然后发回Fetcher去抓取。

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

  捕获后,程序会回调on_finished()方法,这里可以定义后处理过程。结语

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

  分类:

  技术要点:

  相关文章:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线