Scrapyd 是一个运行Scrapy爬虫的服务程序, 它提供一系列HTTP接口来帮我们部署,启动,停止,删除爬虫程序,利用它我们可以非常方便的完成Scapy爬虫项目的部署任务调度。而且它不会像pyspider一样可以看到源码。

  • scrapyd的安装
- pip install scrapyd
- scrapyd官方文档[http://scrapyd.readthedocs.io/en/stable/](http://scrapyd.readthedocs.io/en/stable/)
  • scrapyd的启动
- 安装完成后,在cmd中输入scrapyd即可启动scrapyd
- 默认绑定端口6800
- 然后在浏览器中打开连接 http://127.0.0.1:6800/ 即可进入scrapyd页面


  • 配置scrapyd.conf
- 路径 :E:\python\Lib\site-packages\scrapyd
- 内容:
[scrapyd]
# 项目的 eggs 存储位置
eggs_dir    = eggs
# Scrapy日志的存储目录。如果要禁用存储日志,设置为空
logs_dir    = logs
# Scrapyitem将被存储的目录,默认情况下禁用此选项,如果设置了 值,会覆盖 scrapy的 FEED_URI 配置项
items_dir   =
# 每个爬虫保持完成的工作数量。默认为5
jobs_to_keep = 5
# 项目数据库存储的目录
dbs_dir     = dbs
# 并发scrapy进程的最大数量,默认为0,没有设置或者设置为0时,将使用系统中可用的cpus数乘以max_proc_per_cpu配置的值
max_proc    = 0
# 每个CPU启动的进程数,默认4
max_proc_per_cpu = 4
# 保留在启动器中的完成进程的数量。默认为100
finished_to_keep = 100
# 用于轮询队列的时间间隔,以秒为单位。默认为5.0
poll_interval = 5.0
# webservices监听地址
bind_address = 127.0.0.1
# 默认 http 监听端口
http_port   = 6800
# 是否调试模式
debug       = off
# 将用于启动子流程的模块,可以使用自己的模块自定义从Scrapyd启动的Scrapy进程
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus
  • 发布项目

step_1:python 安装的scripts目录下有个scrapyd-deploy文件, 将其复制到scrapy项目的根目录下

step_2:修改scrapy项目中的config.cfg文件

[settings]
default = lianjia.settings[deploy:127]
#项目地址,deploy后面加上name
url = http://localhost:6800/addversion.json
#项目名称
project = lianjia#也可以是设置多个,deploy后面加上name
[deploy:118]
url = http://192.***.*.***:6800/addversion.json
project = lianjia

step_3: 到scrapy有scrapyd-deploy的目录下可以查看scrapyd服务配置,
执行 python scrapyd-deploy -l命令,可以查看congfig.cfg设置

step_4: 发布项目到指定scrapyd服务上
执行 python scrapyd-deployd deploy_name -p scrapy项目name
例如:python scrapyd-deploy 127 lianjia

C:\Users\wang\Desktop\lianjia>python scrapyd-deploy 127 -p lianjia
Packing version 1530512850
Deploying to project "lianjia" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "ppp", "status": "ok", "project": "lianjia", "version": "1530512850", "spiders": 1}

step_5:执行成功后,scrapy项目中会声称很多配置文件(这里不做解释,需要的话可以查看官方文档)

step_6:再来看下 http://127.0.0.1:6800/,项目上传成功,代码如有修改重复上传即可,它会自动更改版本

  • 控制API
  • 所有的API都是通过http协议发送的请求,目前总共10个api
  • 规则是:http://ip:port/api_command.json,有GET和POST两种请求
  • 这里介绍常用的,其他的可以查看官方文档
# -*- coding: utf-8 -*-
import requestsip = 'localhost'
port = 6800def schedule(project, spider):url = f'http://{ip}:{port}/schedule.json'# url = 'http://{}:{}/schedule.json'.format(project, spider)params = {"project": project,"spider": spider# '_version': version}r = requests.post(url, data=params)return r.json()def listjobs(project):url = f'http://{ip}:{port}/listjobs.json?project={project}'r = requests.get(url)return r.json()def cancel(project, job):url = f'http://{ip}:{port}/cancel.json?project={project}&job={job}'r = requests.post(url)return r.json()if __name__ == '__main__':# 部署命令: python scrapyd-deploy 127 -p lianjia --version v108project = 'lianjia'crawler_name = 'lj_crawler'# 启动项目# schedule(project, crawler_name)# # 获取所有jobs# j = listjobs(project)# print(j)# 停止项目job = '43b1441a3ff211e8825f58fb8457c654'j = cancel(project, job)print(j)
  • BUG处理
  1. builtins.KeyError: ‘project’

    进行post提交时,需要将参数提交放入到 params 或 data 中,而不是json
  2. TypeError: init() missing 1 required positional argument: ‘self’
    修改 spider ,增加 :
def __init__(self, **kwargs):super(DingdianSpider, self).__init__(self, **kwargs)
  • 启动项目

#总结:

  • 这个scrapyd提供了界面,像pyspider一样可以用眼睛在界面看到我们的目录,但是只是看,并不能进行管理
  • scrapyd的部署也可以用scrapyd-client
  • scrapyd API更优化的方法 gerapy后面在介绍
  • scrapyd对接docker 后面在介绍
  • scrapy-redis 后面在介绍

Python-Scrapyd相关推荐

  1. 【Python实战】用Scrapyd把Scrapy爬虫一步一步部署到腾讯云上,有彩蛋

    接着之前的几篇文章说. 我把爬虫已经写好了,而且在本地可以运行了. 这个不是最终的目的啊. 我们是要在服务器上运行爬虫. 利用周末,同时腾讯送的7天云服务器体验也快到期了 就在这里再来一篇手把手的将爬 ...

  2. python项目部署失败的原因_python – 使用scrapyd部署项目时出错

    我的项目文件夹中有多个蜘蛛,想要一次运行所有的蜘蛛,所以我决定使用scrapyd服务运行它们. 我已经开始通过看到 here来做到这一点 首先,我在当前项目文件夹中 >我打开了scrapy.cf ...

  3. Python九十天学习框架,从1到90,从0基础到IQ100

    每个人的基础以及学习进度都不一样,不管最后是90天学会,还是三个月,或是更久,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,所以不管怎么样,学习得有个自己的框架,下面一起来看 ...

  4. 《Learning Scrapy》(中文版)第11章 Scrapyd分布式抓取和实时分析

    序言 第1章 Scrapy介绍 第2章 理解HTML和XPath 第3章 爬虫基础 第4章 从Scrapy到移动应用 第5章 快速构建爬虫 第6章 Scrapinghub部署 第7章 配置和管理 第8 ...

  5. Python -- Scrapy 命令行工具(command line tools)

    结合scrapy 官方文档,进行学习,并整理了部分自己学习实践的内容 Scrapy是通过 scrapy 命令行工具进行控制的. 这里我们称之为 "Scrapy tool" 以用来和 ...

  6. python网络爬虫开发从入门到精通pdf-Python 3网络爬虫开发实战PDF高清完整版下载...

    提取码:9lq0 目录  · · · · · · 第1章 开发环境配置 1 1.1 Python 3的安装 1 1.1.1 Windows下的安装 1 1.1.2 Linux下的安装 6 1.1.3 ...

  7. python网络爬虫工程师薪资-python网络爬虫工程师找工作应该准备什么?

    系统的学习下,下面三本书都不错,另外可以参考下: 2018最佳人工智能数据采集(爬虫)工具书下载​china-testing.github.io Python网络数据采集 /> /> 本书 ...

  8. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf

    作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...

  9. 精通python爬虫框架-精通Python爬虫框架Scrapy PDF 中文清晰版

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.爬虫.框架.Scrapy方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小8.6 MB,迪米特里奥斯编写,目前 ...

  10. python大神-国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

最新文章

  1. 网页失去焦点事件 visibilitychange
  2. 通过 JS 脚本去除csdn广告
  3. Okhttp 源码解析
  4. BRD、MRD 和 PRD 之间的区别与联系有哪些?
  5. 深度学习(图像处理)代码库
  6. Linux的diff和git diff生成patch/打patch
  7. c语言助手,C语言代码实例助手
  8. FFmpeg+dxva2 H265硬解码 下方出现绿条或被下方拉长
  9. linux 内核 addr2line,linux内核调试技巧之addr2line
  10. 重装win10系统(纯净win10系统)
  11. 大胖子走迷宫(bfs)
  12. CAD网页Web端显示开发为什么要以WebGIS的思路来开发?
  13. C++作业5 求和 、数组选择
  14. 计算最大回撤python_python 计算收益回撤比
  15. 制作可执行的JAR文件包及jar命令详解
  16. 一个新的项目:狼人杀
  17. 处理超时订单(超时未付款)的解决方案
  18. 二元一次在线计算机,(二元一次)方程组求解在线计算器_三贝计算网_23bei.com
  19. 基于Java+MySQL 实现(Web)日程管理系统【100010222】
  20. JavaScript 代码格式化及编写工具

热门文章

  1. 用go语言写的github加速程序
  2. MySQL面试知识点汇总
  3. MATLAB神经网络的汉字字符数字字母的识别
  4. 自学Python的最佳选择《Python可以这样学》正式出版
  5. jboss 7 ejb jpa jms datasource配置
  6. php 正则匹配分组命名,正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)...
  7. 3. deit——Training data-efficient image transformers distillation through
  8. Excel生成不重复id或者相同的列
  9. python txt文件读取和改写
  10. jaxb java_jaxbapi的java8到java11迁移问题