1. 程式人生 > >scrapyd部署分散式爬蟲

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可識別路徑

# 將當前專案的一級目錄TotalSpider目錄新增到python可以識別目錄中BASE_DIR = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))sys.path.insert(0, os.path.join(BASE_DIR, “TotalSpider”))

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的爬蟲不止可以輸入命令,因為開啟爬蟲只是想固定的網址發了一個請求,下面是官方連結: