當爬蟲代碼編寫完畢後,你能夠選擇直接運行啓動文件來啓動爬蟲,也能夠將爬蟲部署到 Scrapyd 後,經過 Scrapyd 的 API 來啓動爬蟲。html
那麼如何將爬蟲項目打包並部署到 Scrapyd 呢?node
筆者 將經過兩個具體的部署例子(部署到本地以及部署到雲服務器)以熟悉 Scrapy 爬蟲項目打包、Scrapyd-client 的安裝、使用以及爬蟲項目部署過程。python
Scrapyd 打包部署的整個流程爲: git
當你使用 Scrapy 框架編寫完爬蟲代碼以後,你須要將項目進行打包,纔可以將其部署到 Scrapyd 上。官方文檔對項目的打包有介紹:github
Deploying your project involves eggifying it and uploading the egg to Scrapyd via the
addversion.json endpoint. You can do this manually, but the easiest way is to use the scrapyd-deploy tool provided by scrapyd-client which will do it all for you.
複製代碼
Scrapy 項目須要使用 Scrapyd-client 工具進行打包。json
它是 Scrapy 項目打包專用的客戶端工具,一樣是由 Scrapy 開發團隊開發。使用 Scrapyd-client 將項目打包生成 .egg
文件。bash
與 Scrapyd 同樣,它也能夠經過 pip 進行安裝:服務器
pip install scrapyd-client
複製代碼
在打包前,咱們須要對 Scrapy 項目進行設置。在 Scrapy 項目目錄下,找到項目根目錄的 .cfg
文件(一般是 scrapy.cfg
)並用編輯器打開:框架
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html
[settings]
default = arts.settings
[deploy]
#url = http://localhost:6800/
project = arts
複製代碼
配置文件分爲 Settings 級和 Deploy 級。Settings 中指定了項目所用的配置文件,而 Deploy 中指定項目打包的設置。scrapy
本小節,使用的項目爲 arts
,Scrapyd 服務爲本地服務即 localhost:6800,因此這裏以此做爲基礎進行演示。
能夠看到.cfg
文件中 URL 處默認是有註釋的,這裏將註釋去掉,而且爲項目添加別名 locals
:
[settings]
default = arts.settings
[deploy:locals]
url = http://localhost:6800/
project = arts
複製代碼
然後在 arts 項目的根目錄(.cfg
同級目錄)下使用命令(此時必須保證 Scrapyd 服務是正常運行的):
scrapyd-deploy locals -p arts
複製代碼
將項目打包並部署到指定的目標服務上,Scrapyd 服務會將請求結果以 json 格式返回:
node-name:arts$ scrapyd-deploy locals -p arts
Packing version 1538645094
Deploying to project "arts" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "node-name", "status": "ok", "project": "arts", "version": "1538645094", "spiders": 1}
複製代碼
返回信息中包含了這次打包的版本號、目標服務地址、nodeName、項目狀態、項目名稱以及其中所包含的爬蟲數量。而且在 Web 界面上也能夠看到項目 arts 的名稱,以下圖所示:
scrapy.cfg
文件中 Deploy 級設置裏,Deploy 的名稱是必須設置的嗎?若是不設置會怎麼樣?能夠有多個 Deploy 級配置嗎?
咱們能夠經過動手實驗,來驗證這些問題。
若 Deploy 不設置名稱
能夠看到,Deploy 級配置不設置名稱的話,在命令行中也無需使用名稱,一樣能夠完成項目的打包。
若多個 Deploy 配置
筆者在 192.168.0.61 服務器啓動了 Scrapyd,而且在 scrapy.cfg
文件中設置兩組 Deploy 級別配置,其中一個 Deploy 不設置名稱且 URL 指向本地 Scrapyd;另外一個 Deploy 設置名稱爲 servers 且 URL 指向服務器的 Scrapyd。 cfg
代碼爲:
[settings]
default = arts.settings
[deploy]
url = http://localhost:6800/
project = arts
[deploy:servers]
url = http://192.168.0.61:6800/
project = arts
複製代碼
能夠看到,多個 Deploy 級別的配置是容許的,而且咱們可使用 Deploy 的名稱來區分它們。
經過 Scrapy 項目的部署案例,咱們學會了 Scrapyd-client 的安裝、使用以及打包前.cfg
配置文件的相關配置,而且成功的將一個 Scrapy 項目打包部署到目標服務器上。
動圖教學是否是感受比較容易理解,也比較新奇?
還有更多的爬蟲部署知識以及 Scrapyd 改造知識在等你,點擊這裏查看掘金小冊,咱們一塊兒來作一個帶有訪問權限控制的爬蟲部署控制檯吧!
就像這個同樣: