首页 > 其他分享 >Scrapyd、scrapyd-client部署爬虫项目

Scrapyd、scrapyd-client部署爬虫项目

时间:2023-07-17 11:55:39浏览次数:43  
标签:http deploy zolwallpaper 爬虫 client Scrapyd scrapyd

命令参考:https://github.com/scrapy/scrapyd-client

https://scrapyd.readthedocs.io

安装组件

pip install scrapyd
pip install scrapyd-client

Scrapyd服务器端

服务器端是可以有多个的,你爱多少个就搞多少个服务器端。部署scrapy时,可以手动指定部署到那个目标服务器端中。

scrapyd配置文件:

https://scrapyd.readthedocs.io/en/latest/config.html

可以支持基础的http basic认证。

最多也就是改一下监听的IP地址和端口。

启动服务器端:

scrapyd

Scrapyd-client客户端

提供了

Command line tools命令行工具:

  • scrapyd-deploy, to deploy your project to a Scrapyd server。
    • 用于部署scrapy项目到scrapyd服务器中。
  • scrapyd-client, to interact with your project once deployed。
    • 用于与部署后的项目进行交互、管理。

Python client:

  • ScrapydClient, to interact with Scrapyd within your python code
    • 用于自己编写python代码与scrapyd服务器交互。(除非你有特殊需求,比如自己开发web管理,否则用不上啦)

部署项目实例(这里只是部署,启动时另外一回事)

  • 确保scrapyd服务端已经启动。
  • 修改项目的scrapy.cfg文件。
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = zolwallpaper.settings

;[deploy]  ;默认是只有一个项目的,如果有多个项目和目标服务器,则用deploy:target来区分
;demo1 是指定目标服务器端的名字
[deploy:demo1]
; 这个URL指定的是scrapyd服务器的URL地址
url = http://localhost:6800/
; 如果你的scrapyd服务器端开启了http basic认证,则在这里填写密码
; username = scrapy
; password = secret
# 项目名
project = zolwallpaper

  • cd到项目的根目录,执行命令:
scrapyd-deploy <target> -p <项目名>

target:可要可不要,不填默认为default,如果要填就填你自己设置的,比如我这里设置demo1
项目名:是你在scrapy.cfg中设置的名称
例如:
(venv) PS C:\Users\Administrator\PycharmProjects\zolwallpaper>scrapyd-deploy.exe demo1 -p zolwallpaper
Packing version 1687237821
Deploying to project "zolwallpaper" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "xxxx", "status": "ok", "project": "zolwallpaper", "version": "1687237821", "spiders": 2}

scrapy-deploy部署命令

部署项目到某个目标服务器:

scrapyd-deploy <target> -p <项目名>

target:不指定的话就默认给你命名为default

部署项目到所有可用的目标服务器

scrapyd-deploy -a -p <project>

列出所有的可用的scrapyd服务器列表

命令:
scrapyd-deploy -l


案例:
(venv) PS C:\Users\Administrator\PycharmProjects\zolwallpaper> scrapyd-deploy.exe -l
demo1                http://localhost:6800/

列出某个目标服务器下的所有项目

scrapyd-deploy -L example

案例:
(venv) PS C:\Users\Administrator\PycharmProjects\zolwallpaper> scrapyd-deploy.exe -L demo1
zolwallpaper
default

scrapy-client管理命令

搞清楚几个概念:

target:scrapyd服务器端;

project:爬虫项目;

一个项目下可以有多个爬虫。

常用命令:

列出当前的所有爬虫项目

命令:
scrapyd-client projects

scrapyd-client -t http://127.0.0.1:6800 projects


案例:
(venv) PS C:\Users\Administrator\PycharmProjects\zolwallpaper> scrapyd-client -t http://127.0.0.1:6800 projects
zolwallpaper
default

列出指定目标服务下的某个项目的所有爬虫

命令:
scrapyd-client spiders -p [项目名称]

scrapyd-client.exe [-t http://127.0.0.1:6800] spiders -p zolwallpaper

案例:
(venv) PS C:\Users\Administrator\PycharmProjects\zolwallpaper> scrapyd-client.exe spiders -p zolwallpaper
zolwallpaper:  # 项目名
  bang123   # 该项目下的爬虫
  zol       # 该项目下的爬虫

运行爬虫

方式一:通过scrapyd-client(这玩意其实就是封装了scrapyd的api....)

scrapyd-client schedule -p [项目名] [爬虫名]

**# 可以动态的传递settings某个设置,然后你就可以在爬虫中读取某个设置项的值,从而实现动态爬虫你想要的关键字等功能**
scrapyd-client schedule -p zolwallpaper bang123** --args 'setting=DOWNLOADER_MIDDLEWARES={"my.middleware.MyDownloader": 610}'**
# CURL版:curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1

案例:
scrapyd-client -t http://127.0.0.1:6800 schedule -p zolwallpaper bang123



他妈的,没有关闭爬虫的?做这个开发的人你多一个功能会死....?

所以只能用scrapyd自带的api来取消正在运行的爬虫

https://scrapyd.readthedocs.io/en/latest/api.html#cancel-json

发送post请求:

http://127.0.0.1:6800/cancel.json?job=<任务ID>&project=<项目名>

标签:http,deploy,zolwallpaper,爬虫,client,Scrapyd,scrapyd
From: https://www.cnblogs.com/juelian/p/17559695.html

相关文章

  • xlsclients
    xlsclients列出显示器中的客户端应用程序补充说明xlsclients命令用来列出显示器中的客户端应用程序。语法xlsclients(选项)选项-a:列出所有显示器的客户端应用程序信息;-display<显示器编号>:指定XServer连接的显示器编号,该编号由"0"开始计算,依序递增;-l:使用详细格式列表;......
  • FeignClient服务端接口404问题
    自定义feignClient,服务端继承client接口,调用出现404异常。问题原因:feignClient接口的实现类上使用@Controller或@RestController的value属性中写入了公共url,导致接口方法404;因为feignClient是根据服务名在注册中心拉取到服务然后路由到feignClient接口的实现类上,跳过了类上的url......
  • sihclient.exe 是 Windows 操作系统中的一个进程,它代表"Software Installation Helper
    sihclient.exe是Windows操作系统中的一个进程,它代表"SoftwareInstallationHelper"(软件安装助手)。sihclient.exe的主要功能是帮助管理和执行软件安装、更新和卸载操作。具体来说,sihclient.exe进程负责监控和处理在Windows上进行的软件安装过程。当用户安装或更新软件时,si......
  • Nginx:client_body_temp_path 指令的上传文件测试
    结论硬盘必须要有上传文件3倍大小的剩余空间。否则会报错“nospaceleftondevice”。需要注意,这3份数据都会写到硬盘。大文件上传,实时观察硬盘剩余空间watch-n0.1"df-hm/",会看到很大的波动。默认临时文件路径文档Syntax: client_body_temp_pathpath[level1[lev......
  • dhclient
    dhclient动态获取或释放IP地址补充说明dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数。语法dhclient(选项)(参数)选项0:指定dhcp客户端监听的端口号;-d:总是以前台方式运行程序;-q:安静模式,不打印任何错误的提示信息;-r:释放ip地址。参数网络接口:操作的......
  • MySQL CRUD Client
    classMySqlClient:def__init__(self,db_name:str):self._conn=pymysql.connect(host=MYSQL_CONFIG['host'],port=MYSQL_CONFIG['port'],user=MYSQL_CONFIG['user'],passwd=MYSQL_......
  • Redis CRUD Client
    #-*-coding:utf-8-*-importredisfromconfig.redis_configimportCACHE_REDIS_CONF#CACHE_REDIS_CONF={#"host":"x.x.x.x",#"port":????,#"password":??????,#"db":??,#}redis......
  • Neo4j Client
    importtimefrompy2neoimportGraphfromconfig.neo4j_configimportNEO4J_CONFIG_PRO#NEO4J_CONFIG_PRO={#"host":"x.x.x.x",#"port":???,#"user":"xxx",#"passwd":"......
  • HBase CRUD client
    #requirement.txthappybase==1.2.0"""hbase.py"""#-*-coding:utf-8-*-importhappybasefromconfig.hbase_configimportHAPPYBASE_HBASE#HAPPYBASE_HBASE={#"host":"xxx.xxx.xxx.xxx",#&......
  • SignalR 外部调用自定义Hub类的方法,Clients为null
    这是因为外部调用的类的对象和你连接的Hub类的对象,这两个对象不!一!样!解决方法在自定义的Hub类中,注入IHubContext对象,然后在方法中调用IHubContext对象来向前端推送数据publicclassDataHub:AbpCommonHub,ITransientDependency{publicIOnlineClientManag......