詳述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爬蟲監控小專案,有興趣的同學看看