1. 程式人生 > 實用技巧 >Scrapyd 在centos下線上部署Scrapy爬蟲

Scrapyd 在centos下線上部署Scrapy爬蟲

什麼是scrapyd

scrapyed = scrapy + deploying
把scrapy程式釋出到線上的一套python服務

步驟

1. 安裝

  • 1.安裝scrapyd
    安裝好scrapyd,先開啟服務
pip3 install scrapyd
# 開啟服務
scrapyd

  • 2.安裝scrapyd-client
    這是一個部署到scrapy到scrapyd服務中的工具
pip3 install scrapyd-client

該安裝包擁有scrapyd-deploy 命令,是爬蟲專案釋出到srcapyd服務的關鍵步驟,使用的前提是
必須要開啟scrapyd服務,也就是第一步a) 這一步window需要額外處理,linux不需要

2. 專案準備

  • 1.修改配置檔案
    首先修改scrapy配置檔案,進入scrapy專案資料夾,能看到配置檔案scrapy.cfg修改配置如下
[settings]
default = Demo.settings

[deploy:Demo]   # 這邊專案名字隨便取
url = http://localhost:6800/  # 這個註釋開啟6800是後面訪問埠,如要修改,scrapyd裡面的也要記得一起修改
project = Demo

  • 2.修改scrapyd配置檔案(該檔案可能由於不同的安裝可能路徑不一樣)
sudo find / -name default_scrapyd.conf   # 首先知道這個配置檔案路徑
vim /your_path/default_scrapyd.conf  # vim編輯配置檔案

# 下面是編輯配置檔案
[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 10    #可以不改 這個引數和CPU個數的乘積是爬蟲同時執行的最多個數 為了以後方便改成10
finished_to_keep = 100   
poll_interval = 5.0
bind_address = 0.0.0.0   # 繫結的IP地址改成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

  • 3.測試啟動
    確保伺服器打開了6800埠
# TODO()首先進入scrapy專案資料夾下檢視專案是否能正常啟動
scrapy list  # 如果有報錯缺什麼包 可以檢視我的之前的部落格 
# 上一步正常 可以測試scrapyd 是否正常
scrapyd  # 測試scrapyd開啟 務必保證開啟6800埠 
# 這一步報錯 可以在stackoverflow 上找答案,我之前部落格也有相關的答錯

假如此時訪問 http://127.0.0.1/6800 出現scrapyd的頁面則表示成功

  • Tips

後臺執行scrapyd可以使用 supervisor 管理後臺程序

  • 4.啟動專案
# 部署專案, 一個scrapyd可以部署多個scrapy專案
scrapyd-deploy Demo(cfg:中的部署專案名) -p 爬蟲專案名(cfg中的project名)  # Demo是在scrapy配置檔案裡面設定的部署名稱(假如沒有則為default)

3.控制scrapyd的指令方法

可以通過curl命令獲取6800相關的api介面對爬蟲進行遠端操作,比如 開啟爬蟲,停止爬蟲 等等,

  • 開啟:專案名為爬蟲的頂級專案名,非上面的部署名
curl http://ip地址:6800/schedule.json -d project=專案名 -d spider=爬蟲名稱
  • 關閉:job可以通過6800看
curl http://ip地址:6800/cancel.json -d project=專案名 -d job=232424434
  • 刪除不要的專案,確保該專案沒有執行的爬蟲
curl http://ip地址:6800/delproject.json -d project=專案名
  • 檢視還有多少專案
curl http://ip地址:6800/listprojects.json

大功告成

以上可以看到通過curl命令就是獲取介面命令的方法,可以使用scrapyd_api來快捷操作