来自 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

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部署_如何通过 Scrapyd + ScrapydWeb 简单高效地部署和监控分布式爬虫项目相关推荐

  1. svn增量打包部署_持续集成、持续交付、持续部署(CI/CD)简介

    >>>推荐阅读<<< 1.性能测试学习笔记-场景设计 2.性能测试的重要意义 3.性能分析流程及方法 4.应用系统性能调优之性能分析 概述: 软件开发周期中需要一些 ...

  2. vue.js部署_如何将安全Vue.js应用程序部署到AWS

    vue.js部署 本文最初发布在Okta开发人员博客上 . 感谢您支持使SitePoint成为可能的合作伙伴. 编写Vue应用程序直观,直接,快捷. Vue具有较低的进入门槛,基于组件的方法以及诸如热 ...

  3. gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...

    常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...

  4. travis-ci自动部署_如何使用Travis CI设置高级自动部署

    travis-ci自动部署 by Amir Off 由Amir Off 如何使用Travis CI设置高级自动部署 (How to set up advanced automatic deployme ...

  5. python爬虫 常用网站_给新手推荐几个实用又适合上手的Python爬虫项目

    Python的前景光明不需要过多赘述了,那么作为新人如何快速上手这门语言呢?废话不多说,今天给大家分享三个极实用的Python爬虫案例. 1.爬取网站美图 爬取图片是最常见的爬虫入门项目,不复杂却能很 ...

  6. java 爬虫_探索Java 多线程爬虫及分布式爬虫架构

    在我们调试爬虫程序的时候,单线程爬虫没什么问题,但是当我们在线上环境使用单线程爬虫程序去采集网页时,单线程就暴露出了两个致命的问题: 采集效率特别慢,单线程之间都是串行的,下一个执行动作需要等上一个执 ...

  7. python分布式爬虫框架_python之简单Scrapy分布式爬虫的实现

    分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度. 在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queu ...

  8. 纯手工打造简单分布式爬虫(Python)

    https://www.cnblogs.com/qiyeboy/p/7016540.html 本章讲的依旧是实战项目,实战内容是打造分布式爬虫,这对初学者来说,是一个不小的挑战,也是一次有意义的尝试. ...

  9. scrapyd部署_第八章 第一节 scrapyd和scrapy-client

    如果觉得文章对您产生帮助的话, 欢迎关注Python开发之路(微信公众号: python-developer), 及时获取更多教程 假设有我们做了一个项目是抓取很多网站(每个网站对应一个爬虫), 需要 ...

最新文章

  1. Web开发框架 SSH 简介
  2. 备忘之--apache下为站点添加错误页面
  3. linux php应用多台服务器架构,Nginx+PHP-FPM在两台服务器实现
  4. python 判断变量是否是 None 的三种写法
  5. MobileIMSDK怎样修改服务端核心jar包的源码并替换掉Java服务端的jar包
  6. jzoj4671-World Tour【图论,bfs】
  7. 探寻安全管理平台(SOC)项目的关键成功因素
  8. 桶排序(bucket sort)
  9. idea快捷键失效,快捷键不能用
  10. Lena图像分解成小块与从小块合成
  11. DUET DISPLAY实现分屏,IPAD做WINDOWS显示器副屏
  12. 劳务派遣人员管理办法范文
  13. C语言 输出斐波那契数列
  14. 回文数五位和六位c语言,特殊回文数
  15. python中实现函数不限制参数的数量
  16. springboot项目jar包发布的,如何线上修改jar包。
  17. Python 架设网站
  18. 网络工程师必备学习内容!深度理解OSPF——OSPF是什么?为什么要用OSPF?
  19. 快如闪电的Android模拟器
  20. mysqladmin的用法简介

热门文章

  1. Vue.js 极简小例: 点击事件
  2. Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令
  3. Linux expr命令、Linux wc命令、Linux let 命令
  4. Git 分支管理-git stash 和git stash pop
  5. 单/双中括号与测试条件
  6. IE8兼容问题总结---trim()方法
  7. opencv:图像的基本变换
  8. 透明(颜色)渐变背景(颜色透明背景),兼容IE8
  9. UESTC 250 windy数 数位dp
  10. 安卓开发.四大组件.activity.1