天天看點

使用Scrapyd部署爬蟲

使用Scrapyd部署爬蟲

Scrapyd:

一個部署和運作Scrapy爬蟲的應用程式,它使使用者能在網頁檢視正在執行的任務,能通過JSON API部署(上傳)工程和控制工程中的爬蟲,如建立爬蟲任務、終止爬蟲任務等。

1.要使用Scrapyd部署,需要安裝Scrapyd

pip install scrapyd
           

2.運作Scrapyd

>scrapyd
           

預設情況下,Scrapyd監聽0.0.0.0:6800端口,用浏覽器開:http://localhost:6800/,就能看到Scrapyd已經成功運作。單機頁面的Jobs檢視已經部署的爬蟲,單擊Logs檢視日志資訊。

使用Scrapyd部署爬蟲

3.将代碼上傳并部署到Scrapyd,需要使用一個專門的打包上傳工具scrapyd-client

>pip install scrapyd-client
           

4.将本地Scrapy項目中的scrapy.cfg配置檔案進行配置

[settings]
default = lianjia01.settings
[deploy]
url = http://localhost:6800/
project = lianjia01
           

5.scrapyd-client為使用者提供了scrapyd-deploy指令,用來打包和上傳爬蟲代碼。

Windows下,使用此指令,可能會出現:“‘scrapyd-deploy’ 不是内部或外部指令,也不是可運作的程式或批處理檔案。”的提示。在Python的scripts目錄,能發現一個scrapy-deploy的檔案,但也無法執行。解決辦法

進入Python的scripts目錄,建立scrapy.bat、scrapyd-deploy.bat兩個檔案。

5.1編輯scrapy.bat:

@echo off
C:\ProgramData\Anaconda3\python C:\ProgramData\Anaconda3\Scripts\scrapy %*
           

5.2編輯scrapyd-deploy.bat:

@echo off 
    C:\ProgramData\Anaconda3\python    C:\ProgramData\Anaconda3\Scripts\scrapy-deploy %*
           
使用Scrapyd部署爬蟲

6.指令行進入到某個爬蟲項目目錄,執行指令:

>scrapyd-deploy
           

#####報錯問題

>scrapyd-deploy
'scrapyd-deploy' 不是内部或外部指令,也不是可運作的程式
或批處理檔案。
           
使用Scrapyd部署爬蟲

6.1原因

scrapyd和scrapyd-client版本不相容!

直接pip安裝的scrapyd版本為1.2.0,scrapyd-client版本為:1.1.0

6.2解決(或第5步)

安裝一個版本和scrapyd相适應的scrapyd-client

pip install scrapyd-client==1.2.0a1
           

6.3再次執行

>scrapyd-deploy

使用Scrapyd部署爬蟲

6.4若提示部署status狀态是OK,說明爬蟲部署成功。如果想啟動爬蟲,可以輸入:

project後面是項目名稱,spider後面是爬蟲名稱

>curl http://localhost:6800/schedule.json -d project=lianjia01 -d spider=lianjia
           
使用Scrapyd部署爬蟲

7.在浏覽器打開:http://localhost:6800/,檢視爬蟲運作情況。

使用Scrapyd部署爬蟲

8.如果代碼發生改變,可以重新打包部署,Scrapyd預設執行最新的版本

9.如果要部署到遠端伺服器,Scrapy項目中scrapy.cfg檔案的URL需要配置為遠端伺服器的位址

10.Scrapyd還提供了很多友善的指令,如停止一個爬蟲的指令為

>curl http://localhost:6800/cancel.json -d project=lianjia01 -d job=JOB_ID
           

JOB_ID從web控制台PID獲得

注意:在使用遠端部署的時候,要注意安全問題

鍊家經紀人爬取源碼