内容简介:初级用户:专业用户:
来自 Scrapy 官方账号的推荐
需求分析
初级用户:
- 只有一台开发主机
- 能够通过 Scrapyd-client 打包和部署 Scrapy 爬虫项目,以及通过 Scrapyd JSON API 来控制爬虫,感觉 命令行操作太麻烦 ,希望能够通过浏览器直接部署和运行项目
专业用户:
- 有 N 台云主机,通过 Scrapy-Redis 构建分布式爬虫
- 希望集成身份认证
- 希望在页面上直观地查看所有云主机的运行状态
- 希望 能够自由选择部分云主机,批量部署和运行爬虫项目,实现集群管理
- 希望自动执行日志分析,以及爬虫进度可视化
- 希望在出现特定类型的异常日志时能够及时通知用户,包括自动停止当前爬虫任务
动图展示
集群多节点部署和运行爬虫项目:
安装和配置
- 请先确保所有主机都已经安装和启动 Scrapyd ,如果需要远程访问 Scrapyd,则需将 Scrapyd 配置文件中的 bind_address 修改为
bind_address = 0.0.0.0
,然后重启 Scrapyd。 - 开发主机或任一台主机安装 ScrapydWeb :
pip install scrapydweb
- 运行命令
scrapydweb -h
, 将在当前工作目录生成配置文件 scrapydweb_settings.py ,可用于下文的自定义配置。 - 启用 HTTP 基本认证:
ENABLE_AUTH = True USERNAME = 'username' PASSWORD = 'password'
- 添加 Scrapyd server,支持字符串和元组两种配置格式,支持添加认证信息和分组/标签:
SCRAPYD_SERVERS = [ '127.0.0.1', # 'username:password@localhost:6801#group', ('username', 'password', 'localhost', '6801', 'group'), ]
- 通过运行命令
scrapydweb
启动 ScrapydWeb
访问 Web UI
通过浏览器访问 http://127.0.0.1:5000,输入认证信息登录 。
- Overview 页面自动输出所有 Scrapyd server 的运行状态
- 通过分组和过滤可以自由选择若干台 Scrapyd server,调用 Scrapyd 提供的所有 HTTP JSON API,实现 一次操作,批量执行
部署项目
- 支持指定若干台 Scrapyd server 部署项目
- 通过配置
SCRAPY_PROJECTS_DIR
指定 Scrapy 项目开发目录, ScrapydWeb 将自动列出该路径下的所有项目,选择项目后即可自动打包和部署指定项目:
- 如果 ScrapydWeb 运行在远程服务器上,除了通过当前开发主机上传常规的 egg 文件,也可以将整个项目文件夹添加到 zip/tar/tar.gz 压缩文件后直接上传即可,无需手动打包:)
运行爬虫
- 通过下拉框直接选择 project,version 和 spider
- 支持传入 Scrapy settings 和 spider arguments
- 同样支持指定若干台 Scrapyd server 运行爬虫
日志分析和可视化
- 默认情况下, ScrapydWeb 将在后台定时自动读取和分析 Scrapy log 文件并生成 Stats 页面
- 爬虫进度可视化
邮件通知
基于后台定时读取和分析 Scrapy log 文件, ScrapydWeb 将在满足特定触发器时发送通知邮件 ,邮件正文包含当前运行任务的统计信息。
1.添加邮箱帐号:
SMTP_SERVER = 'smtp.qq.com' SMTP_PORT = 465 SMTP_OVER_SSL = True SMTP_CONNECTION_TIMEOUT = 10 FROM_ADDR = 'username@qq.com' EMAIL_PASSWORD = 'password' TO_ADDRS = ['username@qq.com']
2.设置邮件工作时间和基本触发器,以下示例代表:每隔1小时或某一任务完成时,并且当前时间是工作日的9点,12点和17点, ScrapydWeb 将会发送通知邮件。
EMAIL_WORKING_DAYS = [1, 2, 3, 4, 5] EMAIL_WORKING_HOURS = [9, 12, 17] ON_JOB_RUNNING_INTERVAL = 3600 ON_JOB_FINISHED = True
3.除了基本触发器, ScrapydWeb 还提供了多种触发器用于处理不同类型的 log ,包括 'CRITICAL', 'ERROR', 'WARNING', 'REDIRECT', 'RETRY' 和 'IGNORE'等。
LOG_CRITICAL_THRESHOLD = 3 LOG_CRITICAL_TRIGGER_STOP = True LOG_CRITICAL_TRIGGER_FORCESTOP = False # ... LOG_IGNORE_TRIGGER_FORCESTOP = False
以上示例代表:当发现3条或3条以上的 critical 级别的 log 时, ScrapydWeb 自动停止当前任务 ,如果当前时间在邮件工作时间内,则同时发送通知邮件。
GitHub 开源
活捉几只官方大佬,赶紧前去围观吧,别忘了 Star 噢!
以上所述就是小编给大家介绍的《如何通过 Scrapyd + ScrapydWeb 简单高效地部署和监控分布式爬虫项目》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- python爬虫 | 一文搞懂分布式进程爬虫
- 装个虚拟机,然后拿来玩爬虫!也是极好的!Scrapy分布式爬虫!
- 分布式爬虫对新站的协助
- 分布式通用爬虫框架Crawlab
- 如何构建一个分布式爬虫:基础篇
- 基于redis的分布式爬虫实现方案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design for Hackers
David Kadavy / Wiley / 2011-10-18 / USD 39.99
Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!