1. 程式人生 > 其它 >爬蟲部署,服務端安裝使用scrapyd,客戶端安裝scrapy-client,利用scrapy-client 釋出爬蟲到遠端服務端

爬蟲部署,服務端安裝使用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,獲取到一下頁面

#####