covidAPI背后的秘密:Node.js + cheerio网页抓取全球Coronavirus数据全流程指南
【免费下载链接】covidAPICoronavirus API for Current cases by country COVID-19项目地址: https://gitcode.com/gh_mirrors/co/covidAPI
covidAPI 是一个用Node.js + cheerio构建的轻量级 Coronavirus 数据接口:后端定时抓取全球疫情统计页面,解析清洗后写入本地缓存,对外提供 3 个简单 REST 接口;前端则用 Ionic + Angular 把数据渲染成手机风格的疫情界面。本文带你一步步拆解这套 Coronavirus 数据网页抓取 API 的完整流程,适合想入门 Node.js 网页抓取的新手。
🌍 核心看点:Node.js 网页抓取、cheerio 解析、定时缓存、REST 接口、Ionic 前端
项目结构一览:抓取 → 缓存 → 展示一条龙
covidAPI 的组成非常精简,两大块各司其职:
| 组成部分 | 路径 | 职责 |
|---|---|---|
| 抓取 API 后端 | server.js | axios 抓页面 + cheerio 解析 + quick.db 缓存 |
| 依赖配置 | package.json | express / cheerio / axios / quick.db 等 |
| 容器化部署 | Dockerfile | 基于 node:10-alpine 一键启动 |
| Ionic 前端 | frontend/ | Global / Countries / About 三个移动页面 |
| 构建产物 | www/ | 后端直接托管的静态页面 |
一键安装启动:Node.js 环境 3 条命令跑起来
克隆项目后,安装依赖并启动服务:
git clone https://gitcode.com/gh_mirrors/co/covidAPI cd covidAPI npm install npm start服务启动后,Express 会把www/目录下的前端静态页面也一并托管(见 server.js),一个进程同时搞定接口和界面。生产环境推荐用 Dockerfile 构建镜像,基于轻量node:10-alpine,启动命令为node server.js。
网页抓取核心代码:axios 抓页面,cheerio 做解析
抓取逻辑全部集中在 server.js,整体流程分四步:
- 定时抓页面:
setInterval每 2.5 分钟(150000 毫秒)触发一次,用axios.get拉取全球疫情统计页的 HTML(调度逻辑见 server.js); - 解析总数:
cheerio.load加载 HTML 后,选中.maincounter-number三个计数元素,去掉千分位逗号转成数字,存入cases / deaths / recovered; - 解析国家表格:精确定位
table#main_table_countries_today,按列索引提取累计确诊、今日新增、死亡、活跃、重症、检测量等 10 个字段; - 写入缓存:两组数据分别用
db.set写入 quick.db 本地数据库,并打印日志方便核对。
其中国家名的清洗值得借鉴:有的国家名带超链接、嵌套层级不同,代码用四级兜底读取确保总能取到名称(见 server.js)。
⚡ 划重点:这是一个「抓取 → 清洗 → 缓存」的标准范式,换成任何统计类网页都能照搬。
3 个 REST 接口:即取即用的 Coronavirus 数据
后端对外暴露 3 个轻量 GET 接口(定义见 server.js):
| 接口 | 说明 |
|---|---|
GET /all/ | 全球总数:确诊 / 死亡 / 康复 |
GET /countries/ | 全部国家的完整数据 |
GET /countries/{国家名} | 单个国家数据,忽略大小写匹配 |
配合cors中间件,任何前端项目都可以直接跨域调用,零配置。
Ionic + Angular 前端:把数据变成手机页面
前端是标准 Ionic 5 + Angular 工程,3 个页面分工明确:
- Global 页:tab1.page.html 用卡片展示全球确诊、死亡、康复三大总数;
- Countries 页:tab2.page.ts 订阅接口返回的国家数据并列表展示,搜索框支持实时过滤;
- About 页:数据来源与作者信息。
数据层是一个极简的 Angular Service,covid.service.ts 用 HttpClient 封装了getAll()和getCountries()两个调用,页面组件只管展示。
Docker 一键部署:最快上线方法
官方提供了现成的 Dockerfile,构建并运行:
docker build -t covidapi . docker run -p 3000:3000 covidapi镜像内自动完成依赖安装,暴露 3000 端口,适合部署到任意容器平台。
常见问题 FAQ
Q:数据多久更新一次?接口为什么总是秒回?A:后端每 2.5 分钟抓取一次并缓存,接口直接读 quick.db,响应快、也不会频繁请求源站点。
Q:能改抓别的统计页面吗?A:可以。只需修改server.js中的 URL 与 cheerio 选择器,「抓取 + 解析 + 缓存 + 接口」的整体架构可原样复用。
Q:前端如何重新构建?A:运行 package.json 中的build-frontend脚本(内部执行 ionic build),产物输出到www/目录,由后端直接托管。
总结
covidAPI 是新手学习Node.js 网页抓取的绝佳参考项目:一个不到 240 行的 server.js 演示了「axios 抓页面 → cheerio 解析 → quick.db 缓存 → Express 暴露接口」的完整链路,再搭配 Ionic 前端就是完整的 Coronavirus 数据产品。克隆下来跑一遍,你也能在 10 分钟内搭出自己的数据抓取 API。
【免费下载链接】covidAPICoronavirus API for Current cases by country COVID-19项目地址: https://gitcode.com/gh_mirrors/co/covidAPI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考