一個基於 golang 的爬蟲電影站

hezhizheng發表於2020-03-20

Go Movies

golang + redis 實現的影站 (低階爬蟲)。無管理後臺,效果站: https://go-movies.hzz.cool/ 支援手機端訪問播放

內建自動爬蟲,基本滿足日常看片需求。

Github 地址

https://github.com/hezhizheng/go-movies

首頁效果

img

使用安裝

# 下載
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

注意

# 修改靜態檔案/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 版本已經在開發中了...)

img

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

Other

許多 Go 的原理還沒弄懂,有精力會慢慢深究下。寫得很潦草,多多包涵。

更多原創文章乾貨分享,請關注公眾號
  • 一個基於 golang 的爬蟲電影站
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章