Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCjob

MCjob 用于抓取小木虫招聘版岗位信息,做结构化修复(规则 + 可选 Ollama),并提供:

  • SQLite 数据存储
  • 中国省份岗位热力地图(ECharts)
  • 每周邮件推送(周一 09:00)

目录结构

MCjob/
├── agent.md
├── bin/
│   ├── run.sh
│   ├── web.sh
│   ├── send_weekly_mail.sh
│   ├── install_cron.sh
│   └── install_mail_cron.sh
├── config/
│   ├── settings.yaml
│   └── mail.yaml
├── data/
│   ├── mcjob.sqlite3
│   ├── gb2260.tsv
│   ├── gb2260_stats_201810.tsv
│   └── cache/
├── log/
├── src/
│   ├── main.py
│   ├── core/
│   │   ├── config.py
│   │   └── logger.py
│   ├── domain/
│   │   └── post.py
│   ├── db/
│   │   ├── post_repository.py
│   │   └── sql_loader.py
│   ├── sql/
│   │   ├── create_posts_table.sql
│   │   ├── create_indexes.sql
│   │   ├── select_*.sql
│   │   └── insert/update_*.sql
│   ├── clients/
│   │   └── http_client.py
│   ├── services/
│   │   ├── crawler_runner.py
│   │   ├── dedup_cache.py
│   │   ├── field_repair.py
│   │   └── location.py
│   ├── notifications/
│   │   └── mailer.py
│   ├── spider/
│   │   └── muchong_spider.py
│   ├── push/
│   │   └── weekly_report.py
│   └── web/
│       ├── app.py
│       ├── templates/index.html
│       └── static/
└── venv/

环境准备

cd /vol2/1000/Software/MCjob
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

运行爬虫

./bin/run.sh

强制修复已有记录(会回填/重修复历史行):

./bin/run.sh --repair-existing

去重机制:

  • 批内去重:title
  • 每日缓存去重:data/cache/YYYY-MM-DD.txt
  • 数据库去重:posts.title 唯一索引 + 插入/更新分离写入

Web 地图

启动:

./bin/web.sh --port 8008

访问:

  • http://192.168.31.2:8008

接口:

  • GET /api/summary
  • GET /api/province-stats
  • GET /api/jobs?province=北京&limit=300
  • province=海外 / province=未知 也可用于侧栏筛选

每周邮件推送

预览(不发信):

./bin/send_weekly_mail.sh --dry-run

发送:

./bin/send_weekly_mail.sh

默认 dry-run 预览输出:

  • log/weekly_mail_preview.html

定时任务

安装每日爬虫(每天 00:00):

./bin/install_cron.sh

安装每周推送(每周一 09:00):

./bin/install_mail_cron.sh

查看当前 cron:

crontab -l

日志说明(按天单独文件)

程序日志(由 setup_logger 生成):

  • log/crawler_YYYYMMDD.log
  • log/weekly_report_YYYYMMDD.log

cron 重定向日志:

  • log/cron_YYYYMMDD.log
  • log/mail_cron_YYYYMMDD.log

配置说明

config/settings.yaml

  • crawler.*:列表页 URL、请求重试、频率、最大抓取数
  • ai_repair.*:字段修复开关与 Ollama 参数
  • paths.*:数据库、缓存、日志路径
  • web.*:默认监听地址和端口

当前环境 Ollama 服务端口为 11435,默认配置:

ai_repair:
  enable_llm: true
  model: "qwen3:8b"
  ollama_base_url: "http://127.0.0.1:11435"
  llm_retries: 2
  llm_retry_backoff: 1.8
  llm_max_backoff: 8.0
  llm_queue_timeout: 45
  llm_cooldown_seconds: 90

config/mail.yaml

  • SMTP 参数:SMTP_HOST/SMTP_PORT/SMTP_USER/SMTP_PASS/...
  • 收件人:MAIL_TO
  • 关键词与匹配字段:WEEKLY_KEYWORDS, WEEKLY_KEYWORD_FIELDS

架构说明(重构后)

  • main.py 只负责参数解析与启动。
  • services/crawler_runner.py 负责爬虫编排。
  • db/post_repository.py 统一数据访问,SQL 从 src/sql/*.sql 加载。
  • web/app.pypush/weekly_report.py 均复用同一套配置与仓储,不再重复写 SQL。
  • misc 历史目录已移除。

常见问题

  1. 地图空白:
    • 先检查 /api/province-stats 是否有数据。
    • 检查浏览器控制台是否有 ECharts/map 资源错误。
  2. AI 未触发:
    • 检查 settings.yamlollama_base_urlmodel
    • 在主机执行:curl http://127.0.0.1:11435/api/tags
  3. 邮件未发送:
    • 先执行 --dry-run 确认内容正常。
    • 再检查 SMTP 账号、授权码和 log/mail_cron_YYYYMMDD.log

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages