Python公开课 - pyspider框架介绍

1. 前言

写网络爬虫程序,除了自己开发以外,也可以选择一些成熟好用的框架,当你熟悉好框架后,开发起来事半功倍,效率很高。今天要介绍的就是一个python下的pyspider框架。

2. pyspider基本介绍

pyspider是国人编写的强大的网络爬虫系统。采用Python语言编写,分布式架构,支持多种数据库后端,自带强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。

具体来说有以下特点:

  • 功能强大的WebUI,包括脚本编辑器,任务监视器,项目管理器和结果查看器
  • 支持数据库丰富,包括MySQL、MongoDB、Redis、SQLite、Elasticsearch
  • 可以选用RabbitMQ,Beanstalk,Redis和Kombu作为消息队列
  • 任务支持优先级、重试、定期、按时间重新抓取等
  • 分布式架构
  • 支持抓取Javascript等动态渲染页面
  • 支持Python2和3等

3. pyspider系统架构

pyspider的系统架构图如下:

模块 功能说明
scheduler 调度器,设定任务优先级,周期定时任务,流量控制,基于时间周期或前链标签抓取策略
fetcher 抓取器,支持dataurl,可以通过适配类似phantomjs的webkit引擎支持动态渲染页面
processor 处理器,内置的pyquery,以jQuery解析页面,在脚本中完全控制调度抓取的各项参数,可以向后链传递信息,异常捕获
webui web的可视化任务监控,web脚本编写,单步调试,异常捕获,log捕获,print捕获等

4. pyspider执行流程

概括来说流程比较简单

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

具体来说分为以下几步

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

5. 相关阅读


相关推荐
  1. 北京市私立树人学校小学部
  2. 脱单!武汉的相亲角在哪你知道吗?
  3. 惠州市惠东县平山中学
  4. 嘉兴市王店中学
  5. 小猫种鱼
  6. 宝宝为何喜欢吃手 - 育儿经验
  7. Python公开课 - 爬虫之网页结构
  8. Ubuntu下使用Apache Bench对网站进行压力测试
  9. 佛山市张槎弼唐小学
  10. 伊儿、雪人和琪琪兔一家
  11. 苏州市商业职工子弟小学
  12. Python源码剖析 - Python中的整数对象
  13. 武汉动物园火烈鸟孔雀排队打疫苗
  14. 武汉推出越王勾践剑交通卡
  15. Python的起源 - 二十年前的故事
  16. 害怕影子的人
  17. 猫怕老鼠
  18. NumPy - 简明教程(中)
  19. 金灵子双语幼儿园 - 廊坊幼儿园黄页
  20. 百名网媒总编辑登上知音号欣赏武汉夜色
  21. 解决Python json.dumps中文字符乱码问题
  22. 湖北将发放消费券 - 武汉新鲜事
  23. 长沙市芙蓉路学校
  24. 奥迪客户不满加价,被武汉4S店销售群殴
  25. 成都市金琴路小学
  26. ImageMagick将图像转换为300dpi的两种方式
  27. 武汉一女子七天被骗220万
  28. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  29. 小白兔智战大老虎
  30. 莆田荔城区实验三小
  31. 榆林市榆阳区光华幼儿园 - 榆林市幼儿园黄页
  32. Python公开课 - Ubuntu 升级到Python3.6及对应的pip
  33. 武汉市江岸区海丽达航天双城幼儿园 - 武汉幼儿园黄页
  34. 长沙市宁乡县煤炭坝镇贺石桥中学
  35. 上海市飞尔幼儿园 - 上海幼儿园黄页
  36. 上海市浦东新区南码头小学
  37. Python公开课 - 全文检索模块Whoosh详解(1)
  38. 南宁市横县蓓蓓幼儿园 - 南宁幼儿园黄页
  39. 人不可貌相海水不可斗量
  40. 东方爱婴自然博物馆示范中心 - 西安幼儿园黄页
  41. 九江学院附属中学(九江市第七中学)
  42. 湖北省潜江中学
  43. 泰安市长城中学
  44. Python语言的优点和缺点 - 深度剖析
  45. 还童石
  46. 车水马龙
  47. 上海市刘行新华实验学校
  48. 北京景山学校远洋分校
  49. 看鸡人格瑞得的一家
  50. 北京市第十五中学分校
  51. 厦门六中学
  52. 合肥市新街小学
  53. 武汉00后大二学妹拍视频月入七十万
  54. 重庆市北碚区和欣佳幼儿园 - 重庆幼儿园黄页
  55. 荣昌县峰高中学
  56. 大连市甘井子区蓝精灵幼儿园 - 大连幼儿园黄页
  57. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  58. 威力巨大的核试验
  59. 海口市金色童年幼儿园 - 海南省幼儿园黄页
  60. 无锡市新安实验小学