You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python读取npm数据并抓取指定npm包页面的目标公开信息

npm包信息获取操作指南

方案说明

不需要自己写爬虫抓取前端页面,npm官方提供了公开的Registry REST API,直接调用就能拿到结构化的包数据,比页面解析更稳定,也不会遇到反爬限制。

具体操作路径

  • 单包信息查询:直接向 https://registry.npmjs.org/[包名] 发送GET请求即可,比如你要查询的handlebars,请求地址为 https://registry.npmjs.org/handlebars,返回结果为标准JSON格式,所有页面上展示的字段都可以直接提取。
  • 下载量专项查询:如果需要单独获取周/月/年维度的下载统计,可以向 https://api.npmjs.org/downloads/point/[时间范围]/[包名] 发送请求,时间范围支持 last-day/last-week/last-month 等参数。

你截图中高频字段的对应关系

不用自己逐层找字段,常用信息直接取以下路径即可:

  • 最新版本号:dist-tags.latest
  • 许可证类型:license
  • 开源代码仓库地址:repository.url
  • 首次发布时间:time.created
  • 最近更新时间:time.modified
  • 生产依赖数量:dependencies 对象的键值对数量
  • 开发依赖数量:devDependencies 对象的键值对数量
  • 维护者列表:maintainers 数组
  • 每周下载量:下载量接口返回的 downloads 字段

最简调用示例(Node.js环境)

// 直接调用官方API获取handlebars包信息
async function getHandlebarsInfo() {
  // 获取基础包信息
  const baseRes = await fetch("https://registry.npmjs.org/handlebars");
  const baseInfo = await baseRes.json();
  // 获取上周下载量
  const downloadRes = await fetch("https://api.npmjs.org/downloads/point/last-week/handlebars");
  const downloadInfo = await downloadRes.json();

  // 组装你需要的所有数据
  return {
    latestVersion: baseInfo["dist-tags"].latest,
    license: baseInfo.license,
    repoUrl: baseInfo.repository.url,
    lastUpdate: baseInfo.time.modified,
    weeklyDownloads: downloadInfo.downloads,
    dependencyCount: Object.keys(baseInfo.dependencies || {}).length
  }
}

// 执行调用输出结果
getHandlebarsInfo().then(console.log)

注意事项

  • 官方API对普通非商用请求的频率限制很宽松,个人项目直接调用即可,不需要申请密钥或者认证
  • 不要用爬虫解析前端页面,npm前端页面结构会不定期迭代,页面解析逻辑很容易失效,官方API的返回结构长期保持兼容稳定
  • 如果需要批量查询多个包的信息,可以参考官方Registry文档的批量请求规则调整调用方式,减少请求次数

内容的提问来源于stack exchange,提问作者Bobthebuilder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:09:04