一個基於 golang 的爬蟲電影站
Go Movies
golang + redis 實現的影站 (低階爬蟲)。無管理後臺,效果站: https://go-movies.hzz.cool/ 支援手機端訪問播放
內建自動爬蟲,基本滿足日常看片需求。
Github 地址
https://github.com/hezhizheng/go-movies
首頁效果
使用安裝
# 下載
git clone https://github.com/hezhizheng/go-movies
# 進入目錄
cd go-movies
# 生成配置檔案(預設使用redis db10的庫,可自行修改app.go中的配置)
cp ./config/app.go.backup ./config/app.go
# 啟動 (首次啟動會自動開啟爬蟲任務)
go run main.go
or
# 安裝 bee 工具
bee run
# 如安裝依賴包失敗,請使用代理
export GOPROXY=https://goproxy.io,direct
or
export GOPROXY=https://goproxy.cn,direct
訪問
http://127.0.0.1:8899
開啟爬蟲
-
直接訪問連結 http://127.0.0.1:8899/movies-spider (開啟定時任務,定時爬取就好)- 已內建定時爬蟲,預設凌晨一點開啟爬蟲 (可修改配置檔案 cron.timing_spider 表示式)
- 消耗:Windows 下 cup 10% 左右,記憶體 40mb 左右
網路正常的情況下,爬蟲完畢耗時大概 21 分鐘左右(存在部分資源爬取失敗的情況)
Tools
- https://github.com/gocolly/colly 爬蟲框架
- 模板引擎:https://github.com/shiyanhui/hero
- 資料庫 redis 快取/持久 https://github.com/Go-redis/redis
- 路由 https://github.com/julienschmidt/httprouter
- json 解析 jsoniter github.com/json-iterator/go
- 跨平臺打包:https://github.com/mitchellh/gox
- 靜態資源處理:https://github.com/rakyll/statik
注意
# 修改靜態檔案/static 、 views/hero 需要先安裝包的依賴,執行以下編譯命令,更多用法可參考官方redame.md
# https://github.com/rakyll/statik
statik -src=xxxPath/go_movies/static -f
# https://github.com/shiyanhui/hero
hero -source="./views/hero"
編譯可執行檔案 (跨平臺)
# 用法參考 https://github.com/mitchellh/gox
# 生成檔案可直接執行 Linux
gox -osarch="linux/amd64"
......
-
提供 win64、Linux64 的已編譯的檔案下載(請自行編譯)
使用請確保redis為開啟狀態,預設使用 DB10,啟動成功之後會自動執行爬蟲,可自行訪問 http://127.0.0.1:8899/movies-spider 進行爬蟲
微雲 (推薦微雲 +proxyee-down, 原來 go 版本已經在開發中了...)
Docker 部署(使用 docker-compose 可直接忽略該步驟)
# 安裝 redis 映象(已有可以忽略)
sudo docker pull redis:latest
# 啟動redis容器
# 根據實際情況分配埠 -p 宿主機埠:容器埠
sudo docker run -itd --name redis-test -p 6379:6379 redis
# 修改 app.go 的redis 連線地址為容器名稱
"addr":"redis-test"
# 編譯go-movies
gox -osarch="linux/amd64"
# 構造映象
sudo docker build -t go-movies-docker-scratch .
# 啟動容器
sudo docker run --link redis-test:redis -p 8899:8899 -d go-movies-docker-scratch
docker-compose 一鍵啟動
# 修改 app.go 的redis 連線地址為容器名稱,這裡需要跟docker-compose.yml中保持一致
"addr":"redis-test"
# 編譯go-movies
gox -osarch="linux/amd64"
# 執行
sudo docker-compose up -d
開啟遊覽器訪問 http://127.0.0.1:8899 即可看見網站效果
目錄結構參考 beego 設定
TODO
- [x] 跨平臺編譯,模板路徑不正確
- 使用 https://github.com/rakyll/statik 處理 js、css、image 等靜態資源
- 使用 https://github.com/shiyanhui/hero 替換 html/template 模板引擎
- [x] redis 查詢問題
- 快取頁面資料
- [x] 增加配置檔案讀取
- [x] Docker 部署
- [x] goroutine 併發數控制
- [ ] 爬取資料的完整性
Other
許多 Go 的原理還沒弄懂,有精力會慢慢深究下。寫得很潦草,多多包涵。
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 使用 golang 1.16 embed 更改[一個基於 golang 的爬蟲電影站] 專案靜態資原始檔的打包方式Golang爬蟲
- Golang框架beego電影網爬蟲小試牛刀Golang框架爬蟲
- 擼個爬蟲,爬取電影種子爬蟲
- 基於 Lua 寫一個爬蟲程式爬蟲
- 專案實戰!用爬蟲和Flask打造屬於自己的電影網站爬蟲Flask網站
- 擼個有成就感的爬蟲看電影爬蟲
- 基於nodejs網站爬蟲程式開發NodeJS網站爬蟲
- Golang福利爬蟲Golang爬蟲
- 爬蟲學習之基於Scrapy的網路爬蟲爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- Python學習:爬個電影資源網站Python網站
- 基於java的分散式爬蟲Java分散式爬蟲
- 爬蟲如何爬取貓眼電影TOP榜資料爬蟲
- 記一次基於Cloudflare服務的爬蟲Cloud爬蟲
- Python爬蟲小專案:爬一個圖書網站Python爬蟲網站
- 基於golang分散式爬蟲系統的架構體系v1.0Golang分散式爬蟲架構
- 基於 Electron 的爬蟲框架 Nightmare爬蟲框架
- Python 爬蟲實戰(1):分析豆瓣中最新電影的影評Python爬蟲
- Python電影爬蟲之身體每況愈下Python爬蟲
- python初級爬蟲之貓眼電影Python爬蟲
- Python爬蟲批次下載電影連結Python爬蟲
- 基於node的微小爬蟲——扒了一下知乎爬蟲
- 一個基於Vue+Vuex+iView的電子商城網站VueView網站
- Python爬蟲例項:爬取貓眼電影——破解字型反爬Python爬蟲
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 基於 go + xpath 爬蟲小案例Go爬蟲
- 爬蟲學習之一個簡單的網路爬蟲爬蟲
- 基於asyncio、aiohttp、xpath的非同步爬蟲AIHTTP非同步爬蟲
- 最近要寫爬蟲,大家有推薦 Golang 的爬蟲框架嗎?爬蟲Golang框架
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- 我的第一個 scrapy 爬蟲爬蟲
- 爬蟲福利:教你爬wap站爬蟲
- 一個很垃圾的整站爬取--Java爬蟲Java爬蟲
- Golang爬蟲+正規表示式Golang爬蟲
- 如何構建一個分散式爬蟲:基礎篇分散式爬蟲
- Golang 爬蟲快速入門 | 獲取 B 站全站的視訊資料Golang爬蟲