Scrapyd 在centos Linux下簡單部署Scrapy爬蟲

簡單介紹

  • Scrapyd是scrapy官方推薦的用來在服務器上部署scrapy的庫
  • 官方文檔如下:
    https://scrapyd.readthedocs.io/en/stable/

好了下面開始正式部署scrapy,

我的系統環境是redhat(Linux發行版之一和centos操作差不多)

部署之前友情提示一句,千萬不要用Python3.7版本的,坑賊多,Twisted pillow等等各種包不兼容, 我用的是Python3.6版本的,源碼官方下載地址: https://www.python.org/ftp/python/
scrapy 安裝失敗時 一般需要手動安裝twisted: github地址:https://github.com/twisted/twisted/releases

wget https://github.com/twisted/twisted/releases/TwistedXXX.tar.gz
tar -zxvf TwistedXX.tar.gz   # XXX 指的你選擇的版本
cd TwistedXXX.tar.gz
python setup.py install

安裝之前可選 安裝虛擬環境,參考我這篇博客 https://blog.csdn.net/wgPython/article/details/80691680

  • 一, 安裝相關依賴包
# TODO(我用的虛擬環境(如何創建看我前面的博客文章),所以我直接輸入pip 或者python都會指向python3)
pip install --upgrade pip   # 首先先更新pip
pip install scrapyd
pip install scrapyd-client
  • 二 修改配置文件

首先修改scrapy配置文件,進入scrapy項目文件夾,能看到配置文件scrapy.cfg修改配置如下

[settings]
default = demo.settings

[deploy:wgPython]   # 這邊項目名字隨便取
url = http://localhost:6800/  # 這個註釋打開6800是後面訪問端口,如要修改,scrapyd裏面的也要記得一起修改
project = demo

接着修改scrapyd配置文件, 文件名爲default_scrapyd.conf

  • 說明一下,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
  • 三 測試啓動
    服務器一定要確定開啓6800端口, 可以在運營商的控制面板裏面開啓
# TODO()首先進入scrapy項目文件夾下查看項目是否能正常啓動
scrapy list  # 如果有報錯缺什麼包 可以查看我的之前的博客 
# 上一步正常 可以測試scrapyd 是否正常
scrapyd  # 測試scrapyd開啓 務必保證開啓6800端口 
# 這一步報錯 可以在stackoverflow 上找答案,我之前博客也有相關的答錯

這是之前我解決報錯的博客傳送門點擊這裏 https://blog.csdn.net/wgPython/article/details/82805406
上面開啓正常可以訪問 http://你的服務器IP地址:6800/
在這裏插入圖片描述

OK 到這一部就成功了 一大半,然後可以ctrl + c關掉這個
當然這種方式不是很好,關掉終端,我們scrapyd也GG了, 我們可以後臺運行這個scrapyd程序

  • Tip:
    我們啓動了scrapyd項目之後佔用了6800端口,再次啓動就會報端口被佔用,這是我們可以用lsof這個來查看項目進程(默認沒有安裝lsof 需自己手動安裝)
lsof -i :6800  # 查看佔用此端口的進程
kill -9  進程號 # kill此進程
# 後臺啓動,我們可以使用Linux命令setsid啓動, 
setsid scrapyd
# 也可以使用 nohup scrapyd &等等放後臺運行
# 也可以使用 supervisor 管理後臺進程
放後臺運行管理進程最好使用 supervisor 最方便穩定的,至於使用方法自己搜索吧,也很簡單

  • 四, 啓動你的項目
# 部署項目, 一個scrapyd可以部署多個scrapy項目
scrapyd-deploy wgPython(部署名)  # wgPython是在scrapy配置文件裏面設置的部署名稱
# 開啓你的爬蟲
curl http://localhost:6800/schedule.json -d project=demo(項目名字) -d spider=爬蟲名稱

到此現在就完成了, 然後暫停什麼其他的操作可以查看scrapyd 官方文檔的教程。

重點

千萬不要對公網開放6800端口,在公網裸奔,一定要加白名單訪問
千萬不要對公網開放6800端口,在公網裸奔,一定要加白名單訪問
千萬不要對公網開放6800端口,在公網裸奔,一定要加白名單訪問
說三遍,如果對外開放別人可能會用scrapyd 調度任務來植入木馬

  • 順便說一下還有一個spiderkeeper 可視化的界面,個人感覺那個玩意花裏胡哨的的,部署起來很麻煩,我反正是不喜歡,爬蟲能抓到數據就行了,檢測數據量的變化就可以了。
  • scrapyd的簡單界面,還行。
  • 最後歡迎提問,有空看到我會解答。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章