This commit is contained in:
hajimi
2026-06-11 17:13:55 +08:00
parent 2c6f424fd1
commit a6bccbb651
83 changed files with 360 additions and 97 deletions
+110
View File
@@ -7,6 +7,116 @@
脚本通过 SSH 别名 `sbnews` 连接服务器,打包本地 `server` 代码并在服务器目录解压安装。Windows 下优先使用 `deploy-server.ps1`,不依赖 WSL。
## Docker 爬虫定时任务
Docker 只负责运行 Python 爬虫和容器内 cron。MySQL、Redis、Nginx 继续使用宿主机服务,容器通过运行时环境变量连接宿主机服务。
配置源:
- Docker Compose`docker/docker-compose.crawler.yml`
- 环境变量示例:`docker/.env.docker.example`
- 任务清单:`server/public/dongqiudi-crawler/config/crawler_tasks.yaml`
- 任务日志:管理后台 `系统设置 -> 系统维护 -> 爬虫任务日志`
- 错误日志:管理后台 `系统设置 -> 系统维护 -> 爬虫错误日志`
禁用的定时任务不要放进 Docker 执行清单;如需临时停用某个 Docker 爬虫任务,将 `crawler_tasks.yaml` 对应任务的 `active` 改为 `false`,然后重建或重启 crawler 容器。
### 当前 Docker 定时任务列表
| 任务标识 | 任务名称 | 动作 | Cron |
| --- | --- | --- | --- |
| `video` | 视频列表采集 | `video` | `54 * * * *` |
| `lottery_draw` | 彩种开奖数据采集 | `lottery_draw` | `*/2 * * * *` |
| `match_finish` | 超时比赛收尾 | `match_finish` | `*/1 * * * *` |
| `error_report` | 爬虫错误报告邮件 | `error_report` | `*/1 * * * *` |
| `csl_match` | 中超赛程页面采集 | `csl_match` | `0 */1 * * *` |
| `nba_match` | NBA赛程页面采集 | `nba_match` | `*/1 * * * *` |
| `cba_match` | CBA赛程页面采集 | `cba_match` | `0 */1 * * *` |
| `epl_match` | 英超赛程页面采集 | `epl_match` | `0 */1 * * *` |
| `bundesliga_match` | 德甲赛程页面采集 | `bundesliga_match` | `0 */1 * * *` |
| `laliga_match` | 西甲赛程页面采集 | `laliga_match` | `0 */1 * * *` |
| `seriea_match` | 意甲赛程页面采集 | `seriea_match` | `0 */1 * * *` |
| `ligue1_match` | 法甲赛程页面采集 | `ligue1_match` | `0 */1 * * *` |
| `ucl_match` | 欧冠赛程页面采集 | `ucl_match` | `0 */1 * * *` |
| `uel_match` | 欧联赛程页面采集 | `uel_match` | `0 */1 * * *` |
| `tennis_match` | 网球赛程页面采集 | `tennis_match` | `0 */1 * * *` |
| `esports_match` | 电竞赛程页面采集 | `esports_match` | `0 */1 * * *` |
| `sports_match` | 体坛赛程页面采集 | `sports_match` | `0 */1 * * *` |
| `truth_social` | Truth Social帖子采集+同步 | `truth_social` | `0 */12 * * *` |
| `league_news` | 中超资讯采集 | `league_news` | `*/30 * * * *` |
| `article_content` | 文章内容补全 | `article_content` | `*/1 * * * *` |
| `live_detail` | 实时比赛详情更新 | `live_detail` | `*/1 * * * *` |
| `crypto_news` | 加密货币新闻采集 | `crypto_news` | `0 */1 * * *` |
| `article_content_fetch` | 资讯正文抓取 | `article_content_fetch` | `*/1 * * * *` |
| `dqd_worldcup` | 懂球帝世界杯采集 | `dqd_worldcup` | `*/10 * * * *` |
| `fifa_worldcup_news` | FIFA世界杯资讯 | `fifa_worldcup_news` | `*/10 * * * *` |
| `lottery_community` | 49宝典新旧澳六合彩社区采集 | `lottery_community` | `*/10 * * * *` |
| `taiwan_lottery_news` | 台湾彩券资讯采集 | `taiwan_lottery_news` | `15 */2 * * *` |
| `hkjc_lottery_news` | 香港赛马会资讯采集 | `hkjc_lottery_news` | `45 */2 * * *` |
| `cba_news` | CBA资讯采集 | `cba_news` | `20 * * * *` |
| `nba_news` | NBA资讯采集 | `nba_news` | `10 * * * *` |
### Docker 爬虫常用命令
以下命令默认在测试服执行:
```bash
ssh sbnews
cd /www/wwwroot/test-server.sbnews.net/docker
```
查看容器状态:
```bash
sudo docker ps --filter name=sport-era-crawler
sudo docker compose -f docker-compose.crawler.yml ps crawler
```
构建并启动 crawler
```bash
sudo docker compose -f docker-compose.crawler.yml up -d --build crawler
```
重启 crawler
```bash
sudo docker compose -f docker-compose.crawler.yml restart crawler
```
查看容器日志:
```bash
sudo docker logs --tail 100 sport-era-crawler
```
查看容器内已渲染的 cron
```bash
sudo docker exec sport-era-crawler sed -n '1,260p' /etc/cron.d/sport-era-crawler
```
手动执行并写入“爬虫任务日志”:
```bash
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run nba_match --task-key nba_match --task-name 'NBA赛程页面采集' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run live_detail --task-key live_detail --task-name '实时比赛详情更新' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run match_finish --task-key match_finish --task-name '超时比赛收尾' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run article_content_fetch --task-key article_content_fetch --task-name '资讯正文抓取' --cron-expression 'manual'
```
仅调试 Python 动作,不写入“爬虫任务日志”:
```bash
sudo docker exec sport-era-crawler python main.py nba_match
```
检查容器依赖:
```bash
sudo docker exec sport-era-crawler python -c "import scrapling, browserforge; print('crawler runtime ok')"
```
### PowerShell 一次执行命令
在 Windows PowerShell 中执行: