吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1090|回复: 2
收起左侧

[Python 原创] 介绍一下Scrapyd

[复制链接]
hybpjx 发表于 2024-1-15 10:48

scrapyd介绍

Scrapyd 是一个运行 Scrapy 爬虫的服务程序,它提供一系列 HTTP 接口来帮助我们部署、启动、停止、删除爬虫程序。Scrapyd 支持版本管理,同时还可以管理多个爬虫任务,利用它我们可以非常方便地完成 Scrapy 爬虫项目的部署任务调度。

感觉网上对scrapyd的介绍和部署都不是很清楚。可能用scrapy做多项目的人不多。 我最近用了一下 感觉对用户还算是相对友好。
今天来简单介绍一下
这里提供一下官方网址:https://scrapyd.readthedocs.io/en/latest/

scrapyd 安装

#服务端
pip install scrapyd  
#客户端
pip install scrapyd-client

这里呢就算是安装好了。这里有两个坑。
第一就是有的人安装完了scapyd 没有这个命令

  1. 可以尝试重启
  2. 如果你是使用anconda等环境 记得要切换到指定的虚拟环境下。
  3. 如果你是全局环境安装 可以试着加进环境变量里(慎用)

运行

这里呢 直接运行

scrapyd

就能看到web页面了。这里插图片我觉得不方便就不插入了。
等看到页面其实就代表部署完毕了。

部署scrapy项目

一切都搞好了之后。我们来部署。打开我们事先创建好的项目
打开scrapy项目之后,有一个scrapy.cfg的配置文件:
这个文件就是给下文的scrapyd-deploy

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = xxx.settings

[deploy:test]
url = http://localhost:6800/
project = xxx

这里简单介绍一下

  • [deploy:test]中的test——项目名 (随便取)
  • project = xxx的project 工程名 (你创建 项目时使用的名字)

要记得吧url前面的#号删除哦

部署scrapy项目到scrapyd

其实这里有两种部署方式。

  1. 通过url部署
    https://scrapyd.readthedocs.io/en/stable/api.html#addversion-json 官网上也有写 我这里写的还是不全
    curl http://localhost:6800/addversion.json -F project=xxx -F version=r23 -F egg=@myproject.egg

    window下环境配置。

    到python虚拟环境下找到 Scripts/scrapyd-deploy

新建scrapyd-deploy.bat
然后写上如下脚本

@echo off
"E:\xxx\xxx\Scripts\python.exe" "E:\xxx\xxx\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9

这个xxx根据自己的环境来。万变不离其宗

然后,进入到我们爬虫的根目录,运行scrapyd-deploy

打包scrapy

命令如下

# 部署单个服务器单个项目
scrapyd-deploy <target> -p <project> --version <version>  

# 部署全部服务器单个项目
scrapyd-deploy -a -p <project>  

scrapyd-deploy 部署名(配置文件中设置的名称) -p 项目名称

这里部署的命令为

scrapyd-deploy test(服务名) -p xxx(项目名) 

其他的一些接口链接如下

  1. 获取状态
    http://127.0.0.1:6800/daemonstatus.json

  2. 获取项目列表
    http://127.0.0.1:6800/listprojects.json

  3. 获取项目下已发布的爬虫列表
    http://127.0.0.1:6800/listspiders.json?project=myproject

  4. 获取项目下已发布的爬虫版本列表
    http://127.0.0.1:6800/listversions.json?project=myproject

  5. 获取爬虫运行状态
    http://127.0.0.1:6800/listjobs.json?project=myproject

  6. 启动服务器上某一爬虫(必须是已发布到服务器的爬虫)
    http://127.0.0.1:6800/schedule.json
    (post方式,data={"project":myproject,"spider":myspider})

  7. 删除某一版本爬虫
    http://127.0.0.1:6800/delversion.json

(post方式,data={"project":myproject,"version":myversion})

  1. 删除某一工程,包括该工程下的各版本爬虫
    http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})

这些接口已经告诉我们了。我们其实不需要用curl去控制
curl也是命令行工具。
我们可以使用python去运行


import requests

# 启动爬虫
url = 'http://localhost:6800/schedule.json'
data = {
    'project': 项目名,
    'spider': 爬虫名,
}
resp = requests.post(url, data=data)

# 停止爬虫
url = 'http://localhost:6800/cancel.json'
data = {
    'project': 项目名,
    'job': 启动爬虫时返回的jobid,
}
resp = requests.post(url, data=data)

这样就可以部署到flask 或者fastapi上把接口抛出去,事先爬虫的部署。

实在是不推荐gerapy 或者是其他的一些可视化界面。说实话可以做个临时过渡来用。但具体的一些需求就无法实现了。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
woyucheng + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

vaycore 发表于 2024-1-15 11:27
可以说是最强爬虫框架
py学徒 发表于 2024-1-16 00:47
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表