golang + redis 实现的影站(低级爬虫)。无管理后台,效果站:http://film.hzz.cool 支持手机端访问播放
https://github.com/hezhizheng/go-movies
|-- Dockerfile
|-- LICENSE.txt
|-- config
| |-- app.go
| `-- app.go.backup #程序配置文件
|-- controller #controller层,基本的页面渲染
| |-- DebugController.go
| |-- IndexController.go
| `-- SpiderController.go
|-- docker-compose.yml
|-- go.mod
|-- go.sum
|-- main.go
|-- models # 定义一些redis查询的方法
| |-- Category.go
| |-- Movies.go
| `-- readme.md
|-- readme.md
|-- routes
| `-- route.go
|-- runner.conf # fresh 配置文件
|-- services # 普通业务处理类
| |-- CategoryService.go
| |-- MoviesService.go
| `-- readme.md
|-- static2 # js、css、image等静态资源文件夹
|-- utils # 一些工具类
| |-- Cron.go
| |-- Dingrobot.go
| |-- Helper.go
| |-- JsonUtil.go
| |-- Pagination.go
| |-- RedisUtil.go
| |-- Spider.go
| |-- SpiderTask.go
| `-- spider # 爬虫api版主要功能代码
| |-- SpiderTaskPolicy.go
| `-- tian_kong
| |-- CategoriesStr.go
| `-- SpiderApi.go
`-- views # html模板目录
`-- tmpl
`-- temp_global_var.go # 定义 embed 的全局变量跟一些模板调用的函数
# 下载
git clone https://github.com/hezhizheng/go-movies
# 进入目录
cd go-movies
# 配置文件(默认使用redis db10的库,可自行修改app.go中的配置)
cp ./config/app.go.backup ./config/app.go
# 配置说明
app.spider_path: 爬虫路由
app.spider_path_name: 爬虫路由名称
app.debug_path: debug的路由
app.debug_path_name: debug的路由名称
cron.timing_spider: 定时爬虫的CRON表达式
ding.access_token: 钉钉机器人token
app.spider_mod: 固定参数为 TianKongApi
app.spider_mod: 开发模式建议设置为`true` 避免修改静态资源需要重启服务
# 启动 (首次启动会自动开启爬虫任务)
go run main.go
or
# 安装 fresh 工具
fresh
# 如安装依赖包失败,请使用代理
export GOPROXY=https://goproxy.io,direct
or
export GOPROXY=https://goproxy.cn,direct
访问
http://127.0.0.1:8899
# 用法参考 https://github.com/mitchellh/gox
# 生成文件可直接执行
gox -osarch="windows/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="darwin/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
使用请确保redis为开启状态,默认使用 DB10,启动成功之后会自动执行爬虫,可自行访问 http://127.0.0.1:8899/movies-spider 进行爬虫
# 安装 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" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
# 构造镜像
sudo docker build -t go-movies-docker-scratch .
# 启动容器
sudo docker run --link redis-test:redis -p 8899:8899 -d go-movies-docker-scratch
# 修改 app.go 的redis 连接地址为容器名称,这里需要跟docker-compose.yml中保持一致
"addr":"redis-test"
# 编译go-movies
gox -osarch="linux/amd64" -ldflags "-s -w"
# 运行
sudo docker-compose up -d
打开游览器访问 http://127.0.0.1:8899 即可看见网站效果
-- END
写的不错,赞助一下主机费
你好啊,我运行,看爬虫爬了1个小时,打开网站首页没数据,但是点击某个分类却有数据,不晓得是什么原因
@tao 可以检查下
detail_links:id:1
detail_links:id:3
detail_links:id:24
这几个 redis key 是否有数据。如还没数据,建议使用最新版 https://github.com/hezhizheng/go-movies/releases/tag/v5.2.2 再尝试一次我爬了一晚上数据后,首页展示数据了😁,谢谢啦,我是做java的,感觉项目好像没环境配置文件,对go不熟哈
看了你这个项目,我准备学下go