先上github位址: Scrapyd
- Scrapyd是一個服務,用來運作scrapy爬蟲的
- 它允許你部署你的scrapy項目以及通過HTTP JSON的方式控制你的爬蟲
- 官方文檔: %5Bhttp%3A//scrapyd.readthedocs.org/%5D(http://scrapyd.readthedocs.org/) http://scrapyd.readthedocs.org/
安裝
pip install scrapyd
安裝完成後,在你目前的python環境根目錄
C:\Program Files\Python35\Scripts
下,有一個scrapyd.exe,
打開指令行,輸入scrapyd,如下圖:

image.png
這樣scrapyd就運作起來了,通路127.0.0.1:6800即可看到可視化界面。
注:如果在指令行運作scrapyd報錯如下圖:
先pip list 檢視你的attrs這個包的版本 然後降到16.3 再試試,如果還不行,請評論區提問。
了解scrapyd
scrapyd其實就是一個伺服器端,真正在部署爬蟲的時候,我們需要兩個東西:
- scrapyd (安裝在伺服器端)
- scrapy-client (用戶端)
scrapy-client,它允許我們将本地的scrapy項目打包發送到scrapyd 這個服務端
安裝 scrapy-client:
pip install scrapy-client
部署scrapy項目
在scrapy項目目錄下,有一個scrapy.cfg的配置檔案:
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.org/en/latest/deploy.html
[settings]
default = china.settings
[deploy:demo]
url = http://localhost:6800/
project = china
把原先注釋掉的url那一行取消注釋,這個就是我們要部署到目标伺服器的位址,
然後,把[deploy]這裡改為[deploy:demo],這裡是命名為demo,命名可以任意怎麼都可以,隻要能辨別出來項目就可以。
下邊的project 就是我們的工程名,到此配置檔案更改完成。
接着,執行scrapyd-deploy,這個指令在windows下是運作不了的,(在mac和linux下都是可以的)因為在我們安裝的根目錄
C:\Program Files\Python35\Scripts
中可以檢視這個檔案是沒有字尾名的:
解決方法:在同目錄下,建立檔案scrapyd-deploy.bat
@echo off
"C:\Program Files\Python35\python.exe" "C:\Program Files\Python35\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
上邊代碼是調用的我的環境中的python.exe路徑,大家可以根據自己環境來改變路徑做配置。
這樣就可以執行scrapyd-deploy這個指令了。
然後,進入到我們爬蟲的根目錄,運作scrapyd-deploy:
顯示這個就證明我們成功執行了scrapyd-deploy,注意:一定要進入爬蟲根目錄,就是帶有scrapy.cfg的那一層及目錄。
接着:
運作:scrapyd-deploy demo -p china
因為上邊我們已經配置過scrapy.cfg檔案了,這裡直接使用配置完的參數即可:
這裡顯示我們部署成功,可以檢視執行啟動scrapyd服務端的當先目錄下有兩個檔案夾:
到這一步,隻是把爬蟲項目上傳到服務端,并沒有啟動,
接下來看看如何啟動:
先運作指令檢視服務端狀态:
curl http://localhost:6800/daemonstatus.json
傳回的資訊告訴我們:都為0
再執行啟動指令:
curl http://localhost:6800/schedule.json -d project=china -d spider=china
然後檢視網頁127.0.0.1:6800
再點jobs,
這邊就是我們爬蟲運作的狀态以及日志。
後續補充:
我們在生産環境中,一般scrapyd是部署在伺服器,而我們一般會從本地直接發送到伺服器端,這時需要調整
vim /usr/lib/python3/site-packages/scrapyd/default_scrapyd.conf
scrapyd的預設配置檔案:
預設scrapyd啟動bind綁定的ip位址是127.0.0.1端口是:6800,
将ip位址設定為0.0.0.0
打開配置檔案不需要翻頁就能夠找到bind_address
還有更多更好用的指令,請查閱官方文檔,這裡隻介紹基本用法。