scrapyd部署分散式爬蟲
1.首先我們需要安裝scrapyd這個模組,安裝命令:pip install scaprd
2.然後啟動scrapyd,通過瀏覽器開啟127.0.0.1:6800 這個網址,有以下介面即可:
3.如果連線成功,那你可以關閉scrapyd了,在非C盤裡面建立一個資料夾,名字叫做scrapydTest,然後進入該資料夾,shift+右鍵 開啟命令列工具,輸入scrapyd執行,執行完成後會新建一個dbs空資料夾,用來存放爬蟲專案的資料檔案
4.安裝scrapyd-client模組。scrapyd-client模組是專門打包scrapy爬蟲專案到scrapyd服務中的,執行命令pip install scrapyd-client==1.1.0,安裝完成後,在python環境的scripts中會出現scrapyd-deploy無後綴檔案,這個scrapyd-deploy無後綴檔案是啟動檔案,在Linux系統下可以執行,在windows下是不能執行的,所以我們需要編輯一下使其在windows可以執行
新建一個scrapyd-deploy.bat檔案,右鍵選擇編輯,輸入以下配置,注意:兩個路徑之間是空格,一定要使用雙引號。單引號的話會錯誤。
@echo off
"C:\Users\qianzhen\Envs\scrapySpider\Scripts\python.exe" "C:\Users\qianzhen\Envs\scrapySpider\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
5.進入虛擬環境,進入到你的爬蟲專案中,進入帶有scrapy.cfg檔案的目錄,執行scrapyd-deploy,測試scrapyd-deploy是否可以執行,如果出現以下則正常,如果沒有出現,請檢查你的scrapyd-deploy.bat檔案是否寫對,要注意關閉windows的隱藏檔案字尾名的功能。
6.開啟爬蟲專案中的scrapy.cfg檔案,這個檔案就是給scrapyd-deploy使用的將url這行程式碼解掉註釋,並且給設定你的部署名稱
7.執行scrapyd-deploy -l命令來啟動服務,這個時候,如果你的配置沒有問題,就會顯示你的部署名稱:
8. 開始打包前,執行一個命令:scrapy list ,這個命令執行成功說明可以打包了,如果沒執行成功說明還有工作沒完成注意執行 scrapy list 命令的時候很有可能出現錯誤,如果是python無法找到scrapy專案,需要在scrapy專案裡的settings.py配置檔案裡設定成python可識別路徑
9.執行scrapy list命令,如果返回爬蟲名稱,那麼我們就可以進行下一步操作了
10.到這個時候我們就可以進入到scrapy.cfg這個檔案的目錄下。執行scrapyd-deploy 部署名稱 -p 專案名稱
如:scrapyd-deploy wj -p TotalSpider
如果顯示下面內容,則證明專案打包成功
如果出現:
如果出現上面的這個情況,是因為版本不對的原因,則需要安裝pip install scrapyd==1.1.1,知道出現egg中有你的專案即可。
執行curl http://localhost:6800/schedule.json -d project=專案名稱 -d spider=爬蟲名稱
這時windows會出現無此命令的錯誤,附上安裝連結及教程:
連結: https://pan.baidu.com/s/1P2T7SZCt23OG0laDtXZhYg 提取碼: aj8q 解壓後將bin目錄的路徑新增到path環境中即可
執行後,如果出現
則爬蟲執行成功
可以去網頁127.0.0.1:6800檢視爬蟲執行狀態
常用的scraoyd命令:
刪除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、刪除某一工程,包括該工程下的各版本爬蟲
注意:開啟scrapyd的爬蟲不止可以輸入命令,因為開啟爬蟲只是想固定的網址發了一個請求,下面是官方連結: