【Python3 爬虫学习笔记】pyspider框架的使用 1

在项目实战过程中,我们往往会采用爬虫框架来实现抓取,这样可提升开发效率、节省开发时间。pyspider就是一个非常优秀的爬虫框架,它的操作便捷、功能强大,利用它我们可以快速方便地完成爬虫的开发。

pyspider框架介绍

pyspider是由国人binux编写的强大的网络爬虫系统,其GitHub地址为https://github.com/binux/pyspider,官方文档地址为http://docs.pyspider.org/。
pyspider带有强大的WebUI、脚本编辑器、任务监视器、项目管理器以及结果处理器,它支持多种数据库后端、多种消息队列、JavaScript渲染页面的爬取,使用起来非常方便。

pyspider基本功能
  • 提供方便易用的WebUI系统,可视化地编写和调试爬虫。
  • 提供爬取进度监控、爬取结果查看、爬虫项目管理等功能。
  • 支持多种后端数据库,如MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL。
  • 支持多种消息队列,如RabbitMQ、Beanstalk、Redis、Kombu。
  • 提供优先级控制、失败重试、定时抓取等功能。
  • 对接了PhantomJS,可以抓取JavaScript渲染的页面。
  • 支持单机和分布式部署,支持Docker部署。
    如果想要快速地实现一个页面的抓取,使用pyspider不失为一个好的选择。
与Scrapy的比较
  • pyspider提供了WebUI,爬虫的编写、调试都在WebUI中进行。而Scrapy原生是不具备这个功能的,它采取的是代码和命令行操作,但可以通过对接Portia实现可视化配置。
  • pyspider调试非常方便,WebUI操作便捷直观。Scrapy则是使用parse命令进行调试,其方便程度不及pyspider。
  • pyspider支持PhantomJS来进行JavaScript渲染页面的采取。Scrapy可以对接Scrapy-Splash组件,这需要额外配置。
  • pyspider中内置了pyquery作为选择器。Scrapy对接了XPath、CSS选择器和正则匹配。
  • pyspider的可扩展程度不足,可配置化程度不高。Scrapy可以通过对接Middleware、Pipeline、Extension等组件实现非常强大的功能,模块之间的耦合程度低,可扩展程度极高。
    如果要快速实现一个页面的抓取,推荐使用pyspider,开发更加便捷,如快速抓取某个普通新闻网站的新闻内容。如果要应对反爬程度很强、超大规模的抓取,推荐使用Scrapy,如抓取封IP、封账号、高频验证的网站的大规模数据采集。
pyspider的架构

pyspider的架构主要分为Scheduler(调度器)、Fetcher(抓取器)、Processer(处理器)三个部分,整个爬取过程受到Monitor(监控器)的监控,抓取的结果被Result Worker(结果处理器)处理。
Scheduler发起任务调度,Fetcher负责抓取网页内容,Processer负责解析网页内容,然后将新生成的Request发给Scheduler进行调度,将生成的提取结果输出保存。
pyspider的任务执行流程的逻辑很清晰,具体过程如下:

  • 每个pyspider的项目对应一个Python脚本,该脚本中定义了一个Handler类,它有一个on_start()方法。爬取首先调用on_start()方法生成最初的抓取任务,然后发送给Scheduler进行调度。
  • Scheduler将抓取任务分发给Fetcher进行抓取,Fetcher执行并得到响应,随后将响应发送给Processer。
  • Processer处理响应并提取出新的URL生成新的抓取任务,然后通过消息队列的方式通知Scheduler当前抓取任务执行情况,并将新生成的抓取任务发送给Scheduler。如果生成了新的抓取结果,则将其发送到结果队列等待Result Worker处理。
  • Scheduler接收到新的抓取任务,然后查询数据库,判断其如果是新的抓取任务或者是需要重试的任务就继续进行调度,然后将其发送回Fetcher进行抓取。
  • 不断重复以上工作,知道所有的任务都执行完毕,抓取结束。
  • 抓取结束后,程序会回调on_finished()方法,这里可以定义后处理过程。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值