介绍一下Scrapyd

查看 47|回复 2
作者:hybpjx   
scrapyd介绍
Scrapyd 是一个运行 Scrapy 爬虫的服务程序,它提供一系列 HTTP 接口来帮助我们部署、启动、停止、删除爬虫程序。Scrapyd 支持版本管理,同时还可以管理多个爬虫任务,利用它我们可以非常方便地完成 Scrapy 爬虫项目的部署任务调度。
感觉网上对scrapyd的介绍和部署都不是很清楚。可能用scrapy做多项目的人不多。 我最近用了一下 感觉对用户还算是相对友好。
今天来简单介绍一下
这里提供一下官方网址:https://scrapyd.readthedocs.io/en/latest/
scrapyd 安装
#服务端
pip install scrapyd  
#客户端
pip install scrapyd-client
这里呢就算是安装好了。这里有两个坑。
第一就是有的人安装完了scapyd 没有这个命令
[ol]
  • 可以尝试重启
  • 如果你是使用anconda等环境 记得要切换到指定的虚拟环境下。
  • 如果你是全局环境安装 可以试着加进环境变量里(慎用)
    [/ol]
    运行
    这里呢 直接运行
    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
    其实这里有两种部署方式。
    [ol]
  • 通过url部署
    https://scrapyd.readthedocs.io/en/stable/api.html#addversion-json 官网上也有写 我这里写的还是不全
    curl http://localhost:6800/addversion.json -F project=xxx -F version=r23 -F [email protected]
    window下环境配置。
    到python虚拟环境下找到 Scripts/scrapyd-deploy
    [/ol]
    新建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  -p  --version   
    # 部署全部服务器单个项目
    scrapyd-deploy -a -p   
    scrapyd-deploy 部署名(配置文件中设置的名称) -p 项目名称
    这里部署的命令为
    scrapyd-deploy test(服务名) -p xxx(项目名)
    其他的一些接口链接如下
    [ol]

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

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

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

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

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

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

  • 删除某一版本爬虫
    http://127.0.0.1:6800/delversion.json
    [/ol]
    (post方式,data={"project":myproject,"version":myversion})
  • 删除某一工程,包括该工程下的各版本爬虫
    http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})
    [/ol]
    这些接口已经告诉我们了。我们其实不需要用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 或者是其他的一些可视化界面。说实话可以做个临时过渡来用。但具体的一些需求就无法实现了。

    爬虫, 项目

  • vaycore   

    可以说是最强爬虫框架
    py学徒   

    学了个一知半解,还得好好回炉
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部