爬蟲部署,服務端安裝使用scrapyd,客戶端安裝scrapy-client,利用scrapy-client 釋出爬蟲到遠端服務端
####
服務端安裝使用scrapyd
下面的操作是在遠端的伺服器操作,
1,建立虛擬環境 ,虛擬環境名為sd
2,pip3 install scrapyd
3. 配置
mkdir /etc/scrapyd
vim /etc/scrapyd/scrapyd.conf
4,寫入一下配置
參考官網:https://scrapyd.readthedocs.io/en/stable/config.html#config
[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5.0
#bind_address = 127.0.0.1
bind_address = 0.0.0.0
http_port = 6800
debug = off
runner = scrapyd.runner
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
webroot = scrapyd.website.Root
[services]
schedule.json = scrapyd.webservice.Schedule
cancel.json = scrapyd.webservice.Cancel
addversion.json = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json = scrapyd.webservice.ListSpiders
delproject.json = scrapyd.webservice.DeleteProject
delversion.json = scrapyd.webservice.DeleteVersion
listjobs.json = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus
###
bind_address:預設是本地127.0.0.1,修改為0.0.0.0,可以讓外網訪問。
一. 部署&執行
deploy: 部署scrapy爬蟲程式
# scrapyd-deploy 部署伺服器名 -p 專案名稱
scrapyd-deploy ubuntu -p douyu
run : 執行
#curl http://localhost:6800/schedule.json -d project=project_name -d spider=spider_name
curl http://127.0.0.1:6800/schedule.json -d project=douyu -d spider=dy
stop: 停止
#curl http://localhost:6800/cancel.json -d project=project_name -d job=jobid
curl http://127.0.0.1:6800/cancel.json -d project=douyu -d job=$1
二. 允許外部訪問配置
定位配置檔案: default_scrapyd.conf
find /home/wg -name default_scrapyd.conf
cd /home/wg/scrapy_env/lib/python3.6/site-packages/scrapyd
允許外部訪問:
vim default_scrapyd.conf
bind_address = 0.0.0.0
三. 遠端監控-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、刪除某一工程,包括該工程下的各版本爬蟲
http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})
四. 常用指令碼
迴圈任務:
while true
do
curl http://127.0.0.1:6800/schedule.json -d project=FXH -d spider=five_sec_info
sleep 10
done
實時時間列印:
echo "$(date +%Y-%m-%d:%H:%M.%S), xx-spider定時啟動--"
#####
啟動:
scrapyd
檢視伺服器本機ip,獲取到ip地址,
瀏覽器中訪問:
192.168.12.80:6800
能正常訪問就說明這個成功了,
#####
客戶端安裝安裝scrapyd-client
1. 安裝scrapyd-client
pip3 install scrapyd-client
2.驗證是否安裝成功,
安裝成功後會有一個可用命令,叫作scrapyd-deploy,即部署命令。
我們可以輸入如下測試命令測試Scrapyd-Client是否安裝成功:
3. crapyd-deploy 不是內部命令,所以需要進行專案配置
windows下的scrapyd-deploy無法執行的解決辦法
.進到c:/python/Scripts 目錄下,建立兩個新檔案:
scrapy.bat
scrapyd-deploy.bat
編輯兩個檔案:
scrapy.bat檔案中輸入以下內容 :
@echo off
"C:\Python36" "C:\Python36\Scripts\scrapy" %*
scrapyd-deploy.bat 檔案中輸入以下內容:
@echo off
"C:\Python36\python" "C:\Python36\Scripts\scrapyd-deploy" %*
#####
4.再次檢視
這樣就可以了,
利用scrapy-client 釋出爬蟲到遠端服務端
遠端服務端Scrapyd先要開啟
遠端伺服器必須裝有scapyd,並開啟。
###
客戶端配置和上傳
先修爬蟲專案檔案scrapy.cfg:如下圖
cd 到爬蟲專案資料夾下,後執行:
scrapyd-deploy # 上傳
scrapyd-deploy -l # 檢視
打包專案
1、打包前先檢視專案下的爬蟲檔案:
說明可以開始打包了
2.執行打包命令:
scrapyd-deploy部署名稱-p專案名稱
上面表示打包成功。
以下是可能出現的問題,以及解決方案:
如果出現後端報錯和scrapyd前端頁面報錯,解決方案:
scrapyd 前端報錯:
修改遠端伺服器(192.168.12.80)上的Twisted的版本改為 18.9.0
pip3 install Twisted==18.9.0
重啟 Scrapyd:
在訪問192.168.12.80:6800/jobs,正常顯示:
3.上傳執行爬蟲
curl http://遠端ip:6800/schedule.json -d project=專案名稱 -d spider=爬蟲名稱
如:
curl http://192.168.12.80:6800/schedule.json -d project=circ -d spider=bjh
說明部署成功:
scrapyd部署已經完成了。
管理
1、停止爬蟲
curl http://localhost:6800/cancel.json -d project=scrapy專案名稱 -d job=執行ID
2.刪除scrapy專案
注意:一般刪除scrapy專案,需要先執行命令停止專案下在遠行的爬蟲
curl http://localhost:6800/delproject.json -d project=scrapy專案名稱
3.檢視有多少個scrapy專案在api中
curl http://localhost:6800/listprojects.json
4.檢視指定的scrapy專案中有多少個爬蟲
curl http://localhost:6800/listspiders.json?project=scrapy專案名稱
5總結幾個請求url,通過在瀏覽器輸入,也可以監控爬蟲程序。
例子:位址列訪問 :http://192.168.12.80:6800/daemonstatus.json,獲取到一下頁面
#####