Python爬虫之Pyspider框架架构设计
pyspider的设计基础是:以python脚本驱动的抓取环模型爬虫
通过python脚本进行结构化信息的提取,follow链接调度抓取控制,实现最大的灵活性
通过web化的脚本编写、调试环境。web展现调度状态
抓取环模型成熟稳定,模块间相互独立,通过消息队列连接,从单进程到多机分布式灵活拓展
功能
webui
web的可视化任务监控
web脚本编写,单步调试
异常捕获、log捕获,print捕获等
scheduler
任务优先级
周期定时任务
流量控制
基于时间周期 或 前链标签(例如更新时间)的重抓取调度
fetcher
dataurl支持,用于假抓取模拟传递
method, header, cookie, proxy, etag, last_modified, timeout 等等抓取调度控制
可以通过适配类似phantomjs的webkit引擎支持渲染
processor
内置的pyquery,以jQuery解析页面
在脚本中完全控制调度抓取的各项参数
可以向后链传递信息
异常捕获
pyspider的架构主要分为 scheduler(调度器), fetcher(抓取器), processor(脚本执行):
各个组件间使用消息队列连接,除了scheduler是单点的,fetcher 和 processor 都是可以多实例分布式部署的。 scheduler 负责整体的调度控制
任务由 scheduler 发起调度,fetcher 抓取网页内容, processor 执行预先编写的python脚本,输出结果或产生新的提链任务(发往 scheduler),形成闭环。
每个脚本可以灵活使用各种python库对页面进行解析,使用框架API控制下一步抓取动作,通过设置回调控制解析动作。
参考:https://binux.blog/2014/02/pyspider-architecture/