2018.2最新-搜尋引擎搭建-scrapyd部署我們的爬蟲專案

天涯明月笙發表於2018-02-17

下載程式碼

git clone -b ArticleSpider-elasticsearch https://github.com/mtianyan/Art icleSpider.git

這裡我下載到了desktop目錄。

介紹

  1. scrapyd是一個service用來執行我們的spider例項
  2. 通過http json 控制spider

安裝

安裝到虛擬環境之下:

我們之前執行爬蟲的虛擬環境

workon articlespider3
scrapyd
mark

這時訪問瀏覽器的6800埠沒有錯誤。

mark
mark

看到我現在的目錄在桌面

scrapyd是一個伺服器。

我們部署需要兩個東西,一個是scrapyd 一個是scrapy client

client打包傳送到server

對應的虛擬環境要能好好執行。scrapyd部署到伺服器。

模擬客戶端

開啟一個新視窗

不用進入我們原先的虛擬環境。

pip install scrapyd-client
mark

安裝完成後cd到我們的專案目錄。

mark

前往配置我們的scrapy.cfg

mark

名稱需要自己記住。如我的mtianyan
找到自己當前視窗對應系統環境的scrapyd-deploy檔案

mark

可以直接scrapyd-deploy命令,但是這個是提供給unix使用者的。

windows使用者專屬

在當前目錄建立檔案scrapyd-deploy.bat

@echo off

"D:softEnvDownAnaconda2envspy3python.exe" "D:softEnvDownAnaconda2envspy3Scriptsscrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
mark

首先找到虛擬環境下的python.exe路徑

mark

找到scrapyd-deploy路徑。

mark

可以看到此時scrapyd-deploy可用

mark

-l 檢視已經啟動的scrapyd服務。

視窗一也就是原來執行我們專案虛擬環境的那個。

mark

cd進專案目錄

scrapy list

確保可以檢視到我們的spider專案。

開始部署

-p 要和配置檔案中保持一致

mark
scrapyd-deploy mtianyan -p ArticleSpider

這是因為我們剛才想檢查scrapy list把服務關了

mark
mark

開啟服務後重新執行

mark

打包上傳成功。

前往驗證專案上傳完成

mark
mark

可以看到我執行scrapyd的目錄中已經有eggs 和 dbs

mark

eggs中又有我們的scrapy專案

mark

開始執行我們的scrapy專案

curl http://localhost:6800/daemonstatus.json
mark

檢視當前執行狀態

curl http://localhost:6800/schedule.json -d project=ArticleSpider -d spider=jobbole
mark
mark

可以看到執行成功。

本地執行可以打包報錯_job(我github程式碼已經解決了這個錯誤)

jobbole.py中

def __init__(self, **kwargs):

新增引數 **kwargs

上傳了錯誤的專案如何刪除

curl http://localhost:6800/delproject.json -d project=ArticleSpider

瀏覽器中finish欄位為空表示無異常

log 就是除錯時的log

取消spider任務

curl http://localhost:6800/cancel.json -d project=ArticleSpider -d job=2a9b218a13e011e888cb28d2449bc99e
mark

jobid就是剛才啟動時返回的那個。

mark
mark

可以看到已經停止finish了。

看到有幾個project,spider

curl http://localhost:6800/listprojects.json

檢視有幾個spider

curl http://localhost:6800/listspiders.json?project=ArticleSpider

job是另一個概念,檢視jobs

一個爬蟲執行多次是多個job

curl http://localhost:6800/listjobs.json?project=ArticleSpider | python -m json.tool
mark


相關文章