Python – 神奇的美女圖片及綱要自動爬取工具
美麗動人的女孩子,人人都愛看,不過能否記錄當下的美好呢?需要自動爬取美女組嗎?並且可以將爬取下來的圖片持久化存放於MongoDB 內, 那一定要來看 HowHow 的教學
DEMO 使用範例
- 一鍵自動爬取 DEMO
- MongoDB 爬取內容 DEMO
- Docker 整合,一鍵式完成 工具 + Mongo 部署 DEMO
~~~~ Source Code 打包下載請點我 ~~~~
GitHub 查看原始碼,請點擊我前往
使用方式:
1. 推薦快速方案 : Docker 一鍵快速建置方案,如不知道什麼是 Docker那一定要點擊下方的 HowHow Docker 教學 ~
2. 自行部署方案 : 需自行下載原始碼,並且需要自備 MongoDB 才能使用,且設定檔配置請參考 HowHow 官網說明,將有更多內容。
- Dokcer HowHow的教學請點我 ,如果你還不知道,一定要點進來好好學習 !!!
項目目錄說明
1. src: 爬蟲邏輯主程式
2. log : 程式日誌輸入位置
3. requirement.txt : python3 所需要的lib
4. Dockerfile : 建置本地 image
4. docker-compose.yml : Docker 主要執行入口
Docker 使用方式
- 開啟 docker-compose.yml ,注意紅色框,特別重要,如果要程式能完整啟動一定要輸入 Cookies ,任一 Cookies 會導致有部分資料爬取不到 !!! 至於其他的維持預設值即可,有能力的伙伴也可以自己動手修改 ~
- 登入 JKF 論壇(如沒有請先註冊會員)
1. 打開 Chrome 的開發者工具並選擇 網路(network) ,在搜尋框框內填入forum.php後按下重新整理 (需注意篩選條件要為 all)
2. 找到左邊顯示的 forum.php 並點擊
3. 選擇 標頭 (Headers)
4. 往下方找有 cookie 欄位,並將其內容通通複製 (此作法確保爬蟲工具再執行時候是有登入狀態權限)
- 至 docker-compose.yml ,將複製出來的 cookies 在等號後面直接貼上(不需要加上單引號或是雙引號)
- 確保上述步驟已經完,至終端機執行 docker-compose up -d ,就會自行部署環境了,第一次執行需要拉取本機沒有的 image,需耗時較多時間(依網路下載速度而定)
- Docker 啟動完成後 , 執行 getData.sh ,將會開始自動爬取資料
# 最後的參數為要爬取多少頁面,第一次測試先使用爬一頁
docker-compose exec app sh getData.sh 1
- 上述執行指令可以重複執行,會自動驗證該筆資料是否已經存在,如已經存在將不會重複寫入至 MongoDB 內
- 確認已經完成需要爬取的頁面後,可以登入 IP:8081 上查看 howhow DB 並選擇 JKF Collections 是否已經有資料在裡面
- 如上述資料都已經正確如庫,可以透過 排程工具 (Linux crontab、Windows工作排程器等) 每天執行該腳本,如該有更新資料將會自動寫入庫內
自行部署方式:
- 執行前準備事項
1. 具備 python3.6 以上直譯器
2. 具備 Mongodb , 並確保有權可以訪問並且創建 index,必須確保 27017 阜號暢通
3. 具備 JKF 論壇會員
-
下載原始碼,整包下載請點我
-
解開原始碼包後,透過 pip 安裝 Python所需套件
pip3 install -r requirements.txt
- 登入 JKF 論壇(如沒有請先註冊會員)
1. 打開 Chrome 的開發者工具並選擇 網路(network) ,在搜尋框框內填入forum.php後按下重新整理 (需注意篩選條件要為 all)
2. 找到左邊顯示的 forum.php 並點擊
3. 選擇 標頭 (Headers)
4. 往下方找有 cookie 欄位,並將其內容通通複製 (此作法確保爬蟲工具再執行時候是有登入狀態權限)
- 配置環境變數(已 Mac 為例),如為Windows請自行配置或自行加入程式碼內 ..
export JKFcookie='剛剛複製的cookies'
export myMongoIP='已經準備好的MongoDBIP'
- 執行 getData.sh 腳本,會自動抓取資料並寫入MongoDB (如使用 windows 可直接執行 crawlerData.py)
# 最後的參數為要爬取多少頁面,第一次測試可以先爬一頁
sh getData.sh 1
-
上述執行指令可以重複執行,會自動驗證該筆資料是否已經存在,如已經存在將不會重複寫入至 MongoDB 內
-
如上述資料都已經正確如庫,可以透過 排程工具 (Linux crontab、Windows工作排程器等) 每天執行該腳本,如該有更新資料將會自動寫入庫內
存取的資料透過 Line 機器人發送
- 下一篇將教學如何透過已經有的資料,並藉由 Line 機器人發送至群組,供自己或是朋友們一起觀看 ~~
注: 此工具僅供教學用途,請於下載圖片連結後48小時內刪除,請勿用於商業目的;若有版權問題,使用者必須自行負責。
2 Comments
Comments are closed.