1. 程式人生 > >詳述Scrapyd部署爬蟲專案

詳述Scrapyd部署爬蟲專案

                                Scrapyd部署爬蟲專案

部落格目的: 本部落格介紹瞭如何安裝和配置Scrapyd,以部署和執行Scrapy spider。

Scrapyd簡介 :  Scrapyd是一個部署和執行Scrapy spider的應用程式。它使您能夠使用JSON API部署(上載)專案並控制其spider。

部署步驟:

1. 新建虛擬環境(方便管理),在虛擬環境中安裝scrapy專案需要使用到的包

mkvirtualenv --python=C:\python27\scripts\python.exe scrapySpider 新建虛擬環境

進入虛擬環境使用pip將所需包安裝完成

開啟命令列工具執行pip install scrapyd(1.1.1)

 等待安裝完成後 輸入scrapyd 啟動 scrapy 服務

 瀏覽器輸入127.0.0.1:6800 即可檢視

 2. 如果連線成功先關閉服務,自己在非C盤下新建一個資料夾,名稱自定義如:scrapydTest

然後進入該資料夾,shift+右鍵 開啟命令列工具,輸入scrapyd執行,執行完成後會新建一個dbs空資料夾,用來存放爬蟲專案的資料檔案

 

3. 安裝scrapyd-client模組。scrapyd-client模組是專門打包scrapy爬蟲專案到scrapyd服務中的,進入虛擬環境,執行命令pip install scrapyd-client==1.1.0,安裝完成後,在虛擬環境的scripts中會出現scrapyd-deploy無後綴檔案,這個scrapyd-deploy無後綴檔案是啟動檔案,在Linux系統下可以遠行,在windows下是不能執行的,所以我們需要編輯一下使其在windows可以執行

新建一個scrapyd-deploy.bat檔案,右鍵選擇編輯,輸入以下配置,注意:兩個路徑之間是空格,一定要使用雙引號。單引號的話會錯誤。

 

 4. 進入虛擬環境,進入到你的爬蟲專案中,進入帶有scrapy.cfg檔案的目錄,執行scrapyd-deploy,測試scrapyd-deploy是否可以執行,如果出現以下則正常

 

 5. 開啟爬蟲專案中的scrapy.cfg檔案,這個檔案就是給scrapyd-deploy使用的

將url這行程式碼解掉註釋,並且給設定你的部署名稱

 6. 再次執行scrapyd-deploy -l 啟動服務,可以看到設定的名稱

 7.開始打包前,執行一個命令:scrapy list   ,這個命令執行成功說明可以打包了,如果沒執行成功說明還有工作沒完成

注意執行 scrapy list  命令的時候很有可能出現錯誤,如果是python無法找到scrapy專案,需要在scrapy專案裡的settings.py配置檔案裡設定成python可識別路徑

# 將當前專案的一級目錄TotalSpider目錄新增到python可以識別目錄中

BASE_DIR = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))

sys.path.insert(0, os.path.join(BASE_DIR, “ivsky_spider))

如果錯誤提示,什麼遠端計算機拒絕,說明你的scrapy專案有連結遠端計算機,如連結資料庫或者elasticsearch(搜尋引擎)之類的,需要先將連結伺服器啟動

執行 scrapy list  命令返回了爬蟲名稱說明一切ok了,如下圖

 

 8. 到此我們就可以開始打包scrapy專案到scrapyd了,用命令結合scrapy專案中的scrapy.cfg檔案設定來打包

執行打包命令: scrapyd-deploy 部署名稱 -p 專案名稱

如:scrapyd-deploy wj -p TotalSpider

如下顯示錶示scrapy專案打包成功

 如果出現

版本不對,建議安裝pip install scrapyd==1.1.1,直到你的egg資料夾中有專案即可

curl http://localhost:6800/schedule.json -d project=專案名稱 -d spider=爬蟲名稱

執行後,如果出現

則爬蟲執行成功

可以去網頁中127.0.0.1:6800檢視爬蟲執行狀態

停止爬蟲

curl http://localhost:6800/cancel.json -d project=scrapy專案名稱 -d job=執行ID

刪除scrapy專案

注意:一般刪除scrapy專案,需要先執行命令停止專案下在遠行的爬蟲

curl http://localhost:6800/delproject.json -d project=scrapy專案名稱

檢視有多少個scrapy專案在api中

檢視指定的scrapy專案中有多少個爬蟲

curl http://localhost:6800/listspiders.json?project=scrapy專案名稱

總結幾個請求url

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})

8、刪除某一工程,包括該工程下的各版本爬蟲

https://github.com/DormyMo/SpiderKeeper

一個基於flask後臺框架寫的scrapy爬蟲監控小專案,有興趣的同學看看