Pages - Menu

2019年11月12日 星期二

[Docker]用Docker 架設Scrapyd及UI畫面(Gerapy or Scrapydweb)

前言

前陣子寫完讀冊生活的搜尋工具,就沒再繼續研究自動執行了。
當然可以包成Docker,再用linux工具啟動,這個我也幹過,
請看上一篇文章 [Docker]自製docker image 執行scrapy
但如果我一次有很多隻蟲要爬,難道要一個一個包成docker?
所以,scrapyd 出現了。有點像 ScrapingHub,我也曾經在上面部屬過程式,
右上方的每日一句,就是撈博客來的資料產生的,
可參考 [Python] Scrapy 部署至ScrapingHub 上以及錯誤解法
簡單講,這次就是架設一個平台,所有的爬蟲通通在上面跑。



正文

這次要安裝的有 scarpyd 以及 gerapy 或 scrapydweb,
gerapy沒有自動排程的功能
scrapydweb有自動排程
擇一安裝即可
但不論是gerapy 或 scrapydweb通通是依附在scrapyd上面,
所以scrapyd一定要裝。
操作環境為
Ubuntu 18.04.2 LTS
Docker  Server | Client  18.06
btw, 查詢方式 ubuntu 為 lsb_release –a ; Docker為 docker version 。

1.安裝Scrapyd

直接搜尋scrapyd,也可到 dockerHub 搜尋
可以看到vimagick/scrapyd 是最多人下載的,
但是!!!他的python是2.7,如果你的scrapy是用python3寫的,請不要pull此映象檔
改抓 rockyuan/scrapyd  這個才有支援 python 3,預設的port為6800 ,
安裝完後可直接輸入網址( http://ip:6800 )開啟(Fig. 1)

sudo docker search --no-trunc scrapyd
sudo docker pull vimagick/scrapyd
sudo docker images
sudo docker run -d --name=scrapyd -p 6800:6800 vimagick/scrapyd
sudo docker pull rockyuan/scrapyd
sudo docker run -d --name=scrapyd -p 6800:6800 rockyuan/scrapyd
2019/12/11 新增資料對應位置
sudo docker run -d --name=scrapydII -p 6800:6800 -v ~/scrapyd:/var/lib/scrapyd rockyuan/scrapyd

(Fig. 1)

2-1 安裝Gerapy

這次也用dockerhub搜尋,第一個最多人下載的 thsheep/gerapy
這個比較特別的是,沒有last的版本,所以下載的時候請指定master版本,
但這個dockerHub的說明真的……很少,建議去github看,
知道port是 8000,所以沒想太多,先裝了再說,裝完成功,會看到可執行的網頁。
http://ip:8000/  (Fig. 2)
第二次,用bash進去裡面找到了路徑位置,才重新設定volume的mapping
在資料夾的裡面,上傳爬蟲的資料夾(最上層的資料夾)(Fig. 3)。
實際操作的方式,可參考跟繁瑣的命令行說拜拜!Gerapy分佈式爬蟲管理框架來襲!
是說沒多少設定。
簡單說一下,
建立client連線後,再來就是去project裡面build and deploy。
有一點要注意的是,如果沒有在網頁上先建立project ,Configurable是打X 的。
如果發佈失敗的話,可以按F12 開發者工具,看一下錯誤訊息(Fig. 4),
可以再按最右邊的連結看到更詳細的資訊(Fig. 5)
一開始發現無法發佈,查了之後才知道是scrapyd 裡面的 pymongo沒裝,
導致執行失敗。所以切進去docker裡面,安裝 pymongo,
進入docker裡面的方式 ,cce6662fe0ca  為容器ID,
還不瞭解的請參考 [Docker]不能在docker使用vi,vim,yom,nano

sudo docker pull thsheep/gerapy:master
sudo docker run -d --name=gerapy -p 8000:8000 thsheep/gerapy:master
sudo docker run -d --name=gerapy -p 8000:8000 -v ~/gerapy_projects:/app/gerapy/projects thsheep/gerapy:master
sudo docker exec -it -u 0 cce6662fe0ca bash
pip install pymongo



(Fig. 2)



(Fig. 3)

(Fig. 4)



(Fig. 5)

2-2.安裝Scrapydweb

這款功能比較強,能夠設定自動排程啟動。
同樣在dockerhub搜尋,會看到ryanvin/scrapyweb
但他的overview,我有點不懂他的意思,但能夠確定的是直接複製我的指令可以執行,
安裝完成後,開啟網頁 http://ip.5000  (Fig. 6)
網頁操作方式,可參考  如何簡單高效地部署和監控分佈式爬蟲項目

sudo docker pull ryanvin/scrapydweb
sudo docker run --name scrapydweb -e USERNAME="admin" \
    -e PASSWORD="admin" \
    -e SCRAPYD_SERVERS="192.168.168.237:6800" \
    -v ~/scrapydweb_data:/usr/local/lib/python3.6/site-packages/scrapydweb/data \
    -v /etc/timezone:/etc/timezone \
    -p 5000:5000 \
    -d ryanvin/scrapydweb:latest


(Fig. 6)

ref.
Scrapy視覺化管理管理工具總結
使用scrapyd 管理爬蟲

功能比Scrapy強,卻使用最方便的Gerapy分佈式爬蟲管理框架
跟繁瑣的命令行說拜拜!Gerapy分佈式爬蟲管理框架來襲!

沒有留言:

張貼留言