Skip to content

Latest commit

 

History

History
73 lines (58 loc) · 2.66 KB

README.md

File metadata and controls

73 lines (58 loc) · 2.66 KB

Npm Rank

根据 2019 年 8 月 16 的 npm top1000 的包名,获取这些包现在的下载量排行,默认展示前30。地址 https://www.npmrank.net/ ,前端仓库地址为 npmrank-v

image

数据来源

  • 数据使用的包名来自 anvaka 2019 年爬取的 top1000 数据,距今三四年的时间,但是老的包一般被依赖的多下载量大,所以对前面的排名影响应该不是很大
  • 获取数据使用的 api 来自 npm
  • npm 每天在 UTC 凌晨不久后更新数据,所以这里选择在 UTC 3 点 使用 crontab 定时任务更新新的数据,持续大约1~2小时,因为这是协调世界时,这会产生一些有点不直观的结果
  • 总数据为 2015 年至今的数据
  • github star 来自爬到的 github 页面数据

如果有看到下载量比较多但是不在source.md的包,欢迎提 issue

快速开始

  1. 安装依赖
    pip3 install -r requirements.txt
    
  2. 生成或更新下载数据, 网络正常的情况下持续大约1~2小时
    nohup python3 -u generate_download_data.py > nohup.out 2>&1 &
    
  3. 查看日志
    tail -30f nohup.out
    

目录

.
├── LICENSE
├── README.md
├── database.db                   # sqlite3的包下载数据
├── db.py                         # 数据库方法
├── generate_download_data.py     # 生成、更新新数据
├── requirements.txt
├── server.py                     # 给前端展示提供数据
└── source.md                     # 2019年包排名

待办

  • 使用代理,同时发出多个请求
  • 目前是前 30 条,希望能展示更多的数据,但是图表不方便展示更多的数据

注意

  • 更新数据 generate_download_data 时电脑不能开代理,否则请求报 SSL443 错误
  • 同一接口如 https://www.npmjs.com/package/glob 会根据不同的 header 来返回 json 或者 html,但是暂未确认是哪个 header
  • 单次查询最多限于 18 个月的数据,返回数据的最早日期是 2015 年 1 月 10 日
  • 获取某个包某个区间的下载量,可能为 0,不确定是什么原因,例如
    https://api.npmjs.org/downloads/point/2020-01-01:2021-01-01/express
    
    返回
    {
        "downloads": 0,
        "start": "2020-01-01",
        "end": "2021-01-01",
        "package": "express"
    }
    

致谢

感谢大哥的数据库指导 sunkxs