scrapyd用來方便控制scrapy爬蟲

python#使用scrapyd服務的方法與步驟

什麼是scrapyd

scrapyd = scrapy + deploying
把scrapy程序發佈到上面的一套由python寫好的服務

Scrapyd is an application for deploying and running Scrapy spiders. 
It enables you to deploy (upload) your projects and control their spiders 
using a JSON API.

言外之意: scrapyd是一種服務,它能跟scrapy開發的爬蟲程序配套使用的,其可以
通過發佈scrapy程序並通過一套post/get請求指令(查看)來控制發佈到
scrapyd服務上的scrapy程序。

步驟

1. 準備工作 前期準備1

  a) 安裝scrapyd

安裝好scrapyd,先開啓服務,

#安裝好scrapyd
$ pip install scrapyd
#開啓服務 默認都不需要加載
$ scrapyd

scapyd生成文件
    最後一步在所在的當前指令目錄中會出現空dbs、eggs、logs文件,顧名思義這三個文件是
後期部署scrapy爬蟲項目的管理以及記錄日誌的地方,所以初步可以看到scrapyd是一個
容器,或者更準確點就是需要在後臺開起來的服務,以下本人稱scrapydscrapyd服務
區分scrapy項目

  b) 安裝scrapyd-client

    這是一個部署scrapyscrapyd服務中的工具,

$ pip install scrapyd-client

    該安裝包擁有scrapyd-deploy 命令,是爬蟲項目發佈到srcapyd服務的關鍵步驟,使用的前提是
必須要開啓scrapyd服務,也就是第一步a) 這一步window需要額外處理,linux不需要

2. 發佈scrapy項目scrapyd服務 前期準備2

 a) 創建爬蟲的通常命令
$ scrapy startproject sipdername

  進入爬蟲的項目頂級目錄(之後操作都在該級目錄中),在指令所在目錄下會自動創建爬蟲項目模板,
同時會在頂層目錄中生成一個scrapy.cfg配置,這個配置本來如果你不發佈項目的話,基本上可以忽略。
該配置是發佈爬蟲項目到scrapyd服務的重要配置。

  b) 修改scrapy.cfg內容

    註釋掉scrapy.cfg文件中的url(默認端口6800) 以及 [desploy:scrapyd部署項目名]
scrapy.cfg配置文件

 c) 查看服務以及項目是否正常
  • 1.查看是否可以發佈到scrapyd服務
$ scrapyd-deploy -l 
正常情況下會顯示部署在`scrapyd服務`上的爬蟲項目,如果出錯,最大的可能性就是沒有開啓`scrapyd
服務`,因爲可以在任何目錄中開啓`scrapyd服務`,所以該指令是用來查找當前正在開啓的`scrapyd服務`
的
  • 2.查看scrapy爬蟲項目中的爬蟲名
$ scrapy list 
正常情況下會列出當前你的爬蟲項目,如果列不出來或者報錯,你先看下是哪裏語法有問題。

3. 正式發佈項目

  以上2步驟都沒有問題的話,就開始部署項目(部署這裏不需要關注爬蟲名)

$ scrapyd-deploy 部署項目名(cfg:中的部署項目名) -p 爬蟲項目名

說明:
部署項目名: 是指配置中的項目名稱看 2.b) 你自己設置的名稱,是scrapyd識別不同部署項目的名稱
項目名: 這個是scrapy生成的項目名,也就是你的頂級項目目錄名稱

部署成功之後會在scrapy項目中生成兩個文件build和project.egg-info,分別是通過scrapyd-deploy
命令生成的編譯文件以及一些項目配置信息

4.大功告成

通過ip地址:6800端口進入看服務,這裏特別說明,一切運行都需要先開啓scrapyd服務
    htt://ip地址:6800 訪問

5.一些scrapyd控制爬蟲的指令方法

可以通過 curl命令獲取6800相關的api接口對爬蟲進行遠程操作,比如開啓爬蟲,停止爬蟲等等
1)開啓:項目名爲爬蟲的頂級項目名,非上面的部署名
curl http://ip地址:6800/schedule.json -d project=項目名 -d spider=爬蟲名稱
b)關閉,job可以通過6800看
curl http://ip地址:6800/cancel.json -d project=項目名 -d job=232424434
c)刪除不要的項目,確保該項目沒有運行的爬蟲
curl http://ip地址:6800/delproject.json -d project=項目名
d)查看還有多少項目
curl http://ip地址:6800/listprojects.json

6.其他思考

以上可以看到通過curl命令就是獲取接口命令的方法,那麼我們很容易通過python中的
requests包來發送請求,來執行認爲,這個方法可以集成到django這樣的項目下做定時任務

1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章