news 2026/8/22 14:54:20

covidAPI背后的秘密:Node.js + cheerio网页抓取全球Coronavirus数据全流程指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
covidAPI背后的秘密:Node.js + cheerio网页抓取全球Coronavirus数据全流程指南

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.jsaxios 抓页面 + cheerio 解析 + quick.db 缓存
依赖配置package.jsonexpress / 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,整体流程分四步:

  1. 定时抓页面setInterval每 2.5 分钟(150000 毫秒)触发一次,用axios.get拉取全球疫情统计页的 HTML(调度逻辑见 server.js);
  2. 解析总数cheerio.load加载 HTML 后,选中.maincounter-number三个计数元素,去掉千分位逗号转成数字,存入cases / deaths / recovered
  3. 解析国家表格:精确定位table#main_table_countries_today,按列索引提取累计确诊、今日新增、死亡、活跃、重症、检测量等 10 个字段;
  4. 写入缓存:两组数据分别用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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:53:00

webdav 轻量级 WebDAV 服务器:从安装到生产部署的完整路径

webdav 轻量级 WebDAV 服务器:从安装到生产部署的完整路径 【免费下载链接】webdav A simple and standalone WebDAV server. 项目地址: https://gitcode.com/gh_mirrors/we/webdav webdav 是一个用 Go 编写的轻量级 WebDAV 服务器,编译后就是一个…

作者头像 李华
网站建设 2026/8/22 14:50:03

FSearch 完整指南:从安装到精通的 Linux 文件搜索工具

FSearch 完整指南:从安装到精通的 Linux 文件搜索工具 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 找上个月下载的那份报告,文件管理器要翻…

作者头像 李华
网站建设 2026/8/22 14:50:00

基于SpringBoot的足球训练营系统的设计与实现(源码+文档+部署+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华
网站建设 2026/8/22 14:49:27

NTPClient如何适配各种WiFi开发板:ESP32、ESP8266与MKR1000完整指南

NTPClient如何适配各种WiFi开发板:ESP32、ESP8266与MKR1000完整指南 【免费下载链接】NTPClient Connect to a NTP server 项目地址: https://gitcode.com/gh_mirrors/ntpc/NTPClient NTPClient 是一款轻量级 Arduino 时间同步库,能让 ESP32、ESP…

作者头像 李华