logo
0
0
WeChat Login

MikroTik 产品资讯

https://mikrotik.com/hardware 自动抓取全量硬件产品,生成可检索的静态网站与 JSON API。

在线地址: https://mt.hex.ac.cn

功能概览

  • 自动爬取 — 从 MikroTik 官网硬件页面出发,遍历所有分类、新品、已退市产品
  • 去重更新 — 按 product_url 去重,重复产品执行 UPSERT 而非重复插入
  • 图片下载 — 下载每个产品主图到本地 images/ 目录
  • 完整数据 — 保存产品规格(Specification)、测试结果(Test Results)、价格、CPU/内存等摘要信息
  • 状态追踪 — 自动识别产品状态:新品(new)/ 在售(current)/ 已退市(archived)
  • 静态站点 — 生成可检索网页 index.html(基于 template.html 模板)
  • JSON API — 同步生成 api.json,供前端或其他服务调用

项目结构

文件说明
crawler.py爬虫主程序,抓取产品数据并写入 SQLite
generate_site.py从数据库读取数据,生成 HTML + JSON
template.html前端模板(含搜索、筛选、对比、分页等交互)
index.html生成的静态页面
api.json生成的 JSON API 数据
mikrotik_products.dbSQLite 数据库
images/产品图片目录
run.sh本地一键运行脚本(抓取 + 生成 + 启动预览服务器)
.cnb.ymlCNB CI/CD 流水线配置(每 3 小时定时构建 + 部署到 EdgeOne Pages)

依赖

python3 -m pip install --break-system-packages -r requirements.txt

核心依赖:requestsbeautifulsoup4

使用方式

方式一:一键运行(推荐)

bash run.sh

自动完成:安装依赖 → 抓取数据 → 生成站点 → 启动 HTTP 预览服务

方式二:分步执行

1) 抓取并更新数据库

python3 crawler.py --db mikrotik_products.db --images-dir images

说明:

  • 数据库默认 mikrotik_products.db
  • 图片默认下载到 images/
  • 重复抓取时按 product_url 去重并更新字段
  • 自动识别并标记产品状态(new / current / archived)
  • 网络异常时会自动重试,失败的产品会列出便于后续补跑

2) 生成网页与 API

python3 generate_site.py --db mikrotik_products.db --out index.html

可选参数:

  • --template template.html — 指定 HTML 模板文件(默认 template.html
  • --json api — 指定 JSON API 输出路径前缀(默认 api,生成 api.json

网页功能

  • 搜索 — 按名称查询(型号/名称)
  • 分类筛选 — 按类别检索
  • 架构筛选 — 按 CPU 架构检索
  • 设备对比 — 勾选后生成对比表格
  • 分页懒加载 — 每页 50 条,点击"加载更多"追加
  • 图片悬停预览

表格列包含:

  • 对比勾选
  • 产品图片
  • 型号
  • 类别
  • CPU 信息(架构 / 型号 / 核心 / 主频)
  • 存储交换(内存 / 存储 / 存储类型 / 交换芯片)
  • 性能信息(桥接 & 路由 64byte 吞吐)
  • 价格
  • 设备描述
  • 原始链接

JSON API 格式

{ "code": 200, "message": "success", "data": { "total": 600, "products": [ { ... } ] }, "metadata": { "source": "MikroTik 官网", "update_time": "2025-01-15 08:00", "generated_by": "mt.hex.ac.cn" } }

数据库表结构

表名说明
products产品聚合信息(名称、型号、图片、CPU、价格、性能摘要、状态等)
categories分类字典(name + slug)
product_categories产品与分类多对多关系
specifications规格明细(section / key / value)
test_results测试结果明细(metrics_json 以 JSON 存储各包大小下的 kpps/Mbps)

CI/CD

项目通过 CNB 平台实现自动化流水线(.cnb.yml):

  • 触发频率: 每 3 小时定时执行(cron: 0 */3 * * *
  • 流程: 安装依赖 → 爬取最新数据 → 生成站点 → 部署到 EdgeOne Pages
  • 失败通知: 构建失败时通过飞书机器人发送告警
  • 部署目标: mt-hex-ac-cn(EdgeOne Pages production 环境)

About

由 AI 驱动的 Mikrotik 产品资讯

Mikrotik产品资讯
Language
Python60.8%
HTML38.4%
Shell0.8%