前言
前陣子寫完讀冊生活的搜尋工具,就沒再繼續研究自動執行了。當然可以包成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分佈式爬蟲管理框架來襲!
0 意見:
張貼留言