目录
目录README.md

BUAA_OpenSource_Rust2

如何运行

  • 使用PyCharm打开BUAA_OpenSource_Rust2目录

  • 修改cargo/system.py的init()函数,配置爬取队列初始化的方式

以下例子表示,将向优先级最高的0号爬取队列放入爬取任务”package_list”:爬取第1页,第1页包含1个Package,排序方式为rank,爬取的API链接为https://libraries.io/api/search?platforms=Cargo&sort=rank&page=1&per_page=1&api_key=<随机密钥>

def init():
    print("[system] 执行init()函数初始化队列")
    put_queue_obj(0, build_crawler_dict("package_list", page=1, per_page=1, sort="rank"))

如果爬取完成,可以将爬取完成的初始化任务注释掉,加入新的任务,如以下例子中,爬取第1页已经完成,继续按每页1个Package爬取到第10个Package,再按照每页10个Package爬取第2页即爬取到第20个Package。

def init():
    print("[system] 执行init()函数初始化队列")
    # put_queue_obj(0, build_crawler_dict("package_list", page=1, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=2, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=3, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=4, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=5, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=6, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=7, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=8, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=9, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=10, per_page=1, sort="rank"))
    put_queue_obj(0, build_crawler_dict("package_list", page=2, per_page=10, sort="rank"))
  • 在PyCharm中打开main.py,运行当前文件,开始爬取

  • 程序可以安全处理中断,如需中断,可放心使用Ctrl+C(SIGINT)或kill命令(SIGTERM)中断程序,中断后下次运行将从当前进度继续。

每次开始运行将判断爬取队列是否为空,如果是则会等待5秒后执行init()初始化再开始爬取,否则不会执行init()而会立即继上次进度继续爬取

  • 当看到“恭喜,爬取已完成”时,当前爬取结束,可以重复步骤2修改cargo/system.py的init()函数,配置下次爬取队列初始化的方式,可将已完成的爬取注释掉,加入新的爬取任务。

如何检验数据库状态

随机获取300个关系

MATCH (n)-[r]->(m)
RETURN n, r, m
ORDER BY rand()
LIMIT 300;

随机获取300个HAS_VERSION关系

MATCH (package)-[r:HAS_VERSION]->(version)
WITH package, r, version, rand() AS random
ORDER BY random
LIMIT 300
RETURN package, r, version;

随机获取300个PACKAGE_DEPENDS_ON关系

MATCH (package_a)-[r:PACKAGE_DEPENDS_ON]->(package_b)
WITH package_a, r, package_b, rand() AS random
ORDER BY random
LIMIT 300
RETURN package_a, r, package_b;

随机获取300个VERSION_DEPENDS_ON关系

MATCH (version_a)-[r:VERSION_DEPENDS_ON]->(package_b)
WITH version_a, r, package_b, rand() AS random
ORDER BY random
LIMIT 300
RETURN version_a, r, package_b;
关于
46.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号