睡睡念
有一天突然發現,我的爬蟲不會動了,原因是網站改版,所以規則要改。
於是,既然都要改了,那就把很久以前沒有概念的docker都改一改吧,
順便改成docker compose一次解決。
正文
架設服務
docker-compose.yml
version: '3'
services:
scrapyd:
container_name: scrapyd
image: vimagick/scrapyd
volumes:
- ./data:/var/lib/scrapyd
- /usr/local/lib/python3.7/dist-packages
restart: unless-stopped
networks:
- scrapy_net
gerapy:
container_name: gerapy
image: germey/gerapy
volumes:
- ./gerapy:/app/gerapy
ports:
- 8000:8000
networks:
- scrapy_net
mongo:
container_name: mongo
image: mongo:latest
restart: always
volumes:
- ./mongodbdata:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: daimomadmin
MONGO_INITDB_ROOT_PASSWORD: d@imom
networks:
- scrapy_net
ports:
- 27017:27017
mongo-express:
container_name: mongo-express
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_SERVER: 192.168.1.78
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_ADMINUSERNAME: daimomadmin
ME_CONFIG_MONGODB_ADMINPASSWORD: d%40imom
networks:
- scrapy_net
networks:
scrapy_net:
name: scrapy
driver: bridge
執行
docker compose up -d
注意事項
mongo-express 底下的 ME_CONFIG_MONGODB_ADMINPASSWORD
為什麼會出現 %40?
因為直接用@ 會出現錯誤。
UnhandledPromiseRejectionWarning: MongoParseError: Unescaped at-sign in authority section
以下是chatGPT的回答
![[138-fig.1.jpg]]
設定gerapy
如果是根據上面的docker compose建立的話,
網址用 localhost:8000登入,
預設的帳密是 admin/admin,進去後最好改一下。
- 設定 scrapyd的位置,在同一個network裡面,
所以能這樣互打。
上傳專案
這邊要注意,上傳的壓縮檔案裡面要有『 .cfg』的檔案
檔案結構如下
壓縮的時候,請針對上層目錄直接壓縮,以上圖來說就是壓縮TaazeSpider這個資料夾。
上傳完後,可以按Edit,可以看到程式。- 部署到主機上
![[138-fig.5.jpg]]
必須先build,然後才可以deploy到主機上
![[138-fig.6.jpg]]
如果碰到打包失敗或是部署失敗,可以到主機上看一下log。
docker logs gerapy
docker logs scrapyd
- 測試運作
到主機的設定畫面,選擇schedule ,然後按下run 跑跑看有沒有正常。 - 設定排程
Name : 隨意
Project :projects的名稱
Spider:在Schedule的名稱,可參考上圖
Clients:主機名稱,可以用選的
Trigger:crontab 是固定的時間執行
interval 是 隔多久執行
date 是 特定日期
![[138-fig.8.jpg]]
好了後可以按下status,可以看到下次執行時間,從這看有沒有設定成功。
這邊可以看到 Next time的時間
ref.
- docker部署打包失敗
- gerapy
- CSS Selector Reference
0 意見:
張貼留言