# source-worm **Repository Path**: lianzt/source-worm ## Basic Information - **Project Name**: source-worm - **Description**: maven仓库爬虫 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-01 - **Last Updated**: 2024-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 说明 ## 抓取热门 maven 仓库 maven中央库有 google 的机器人校验,需先使用浏览器打开网站,通过机器人校验后将 cookies 拷贝到 http-util.js 文件中。 ```shell node get-top-list.js ``` 运行后会将热门仓库保存到 data/sqlite3.db 文件。 需分步执行以下两个操作: ```js // 执行1:保存各个分类的热点仓库到 group-domain 文件,文件内保存仓库的 groupId 前缀 // saveCategories() // 执行完成后可手动编辑 group-domain 文件,进行增、删、去重操作。 // 执行2:根据 group-domain 文件的内容,爬取maven仓库中 groupId 前缀开始的所有下级节点,并保存到sqlite loadGroupId() ``` 仅下载热门仓库会缺失很多基础包,因些需对 saveCategories 保存的 group-domain 做下简单编辑,并增加一些基础包的 groupId 前缀。 更新 group-domain 后执行 loadGroupId 函数即可。 对生成的 data/sqlite3.db 文件做一次备份。 ## maven 热点仓库下载 需先部署本地 nexus 服务,并导入中央库索引,下载程序会扫描 maven中央仓库 的目录结构,然后组装成访问本地 nexus 的 url。 访问本地 nexus 下载jar文件后,nexus会对下载过的文件缓存,程序下载的文件会自动删除。 ```shell # 开始下载热点仓库文件 node download-file.js -df # 后台运行:commond 为上述命令 nohup {commond} >> {yyyy-mm-dd}.log & ``` 下载热点仓库功能可支持断点续传,程序中止后直接执行上述命令可继续之前的任务下载,如果要重新下载,可将备份的 data/sqlite3.db 文件覆盖,然后重新下载。 ## 全量 maven 仓库下载 ```shell # 默认模式下载:可断点续传,已下载的热点仓库不再重复下载 node download-all.js -da # 忽略断点重新下载:重新开始下载任务,已下载的热点仓库不再重复下载 node download-all.js -da -r # 全量下载:可断点续传,热点仓库重新下载 node download-all.js -da -a # 全量重新下载:重新开始下载任务,热点仓库重新下载 node download-all.js -da -r -a # 后台运行:commond 为上述命令 nohup {commond} >> {yyyy-mm-dd}.log & ``` ## 配置 配置信息保存在 config.js 文件,参考注释修改即可。 关于同步下载的队列数配置(POOL_SIZE),可简单参使用 带宽 / 2 取值。例如:100Mbps下行带宽,同步下载队列可配置为50. 下载任务完成后需检查是否有下载失败的项,可再次执行下载命令,并查看日志中否有以下提示: ``` INFO 2021-03-03 15:45:51 ---> 开始下载任务:下载队列长度 10, 热点库 1119 个,上次退出未完成的下载任务 413 INFO 2021-03-03 15:45:53 ---> 恢复下载成功,url=https://repo1.maven.org/maven2/ai/tripl/arc_2.12/2.14.0/arc_2.12-2.14.0.jar ....... ``` 重复执行直到日志中不再出现未完成下载任务。