请求到Github搜索没有分页



我试图在Github组织中获得依赖于特定存储库的列表。

例如。如果我有一个名为string_utils的库,我只想搜索存储库的名称(而不是文件,不是内容,只是存储库名称))包含类似import string_utils的内容。

当我使用Github浏览器搜索时,我得到了存储库中的所有文件及其内容的特定匹配行。我只需要存储库名称。

我结束了将请求复制为curl请求,并执行一些shell脚本:

query_string="q=<query search> -repo:<repo>"
url="https://<URL stuff>/search"
grep_regex='<a.+class="Link--secondary".+href="/[^/]+/[^"]+(?=">)'
declare -a dependents="$(
(
seq 1 "$PAGES" 
| xargs -P0 -I page_number 
curl 
--get 
--data-urlencode "${query_string}" 
--data-urlencode "type=Code" 
--data-urlencode "p=page_number" 
--data-urlencode "filename=pom.xml" 
--header "${COOKIE_HEADER}" 
--silent 
"$url"
) 
| grep -Po "$grep_regex" 
| awk '!unique[$0]++'
)"

但是我得到的存储库比预期的少。我想这是因为分页问题。

有谁知道如何得到所有的结果没有分页,或更好的方法?

您应该使用GitHub REST API。搜索有特定的端点。这个API是为机器可读的交互而设计的,而使用像你这样的网络抓取技术可能随时会崩溃,并且很可能被阻止作为反滥用措施。

但是,请注意REST API响应仍然是分页的。这是因为GitHub不知道你想要多少响应,并且可能有许多响应你的请求(搜索,可能数百万)。如果您只想要前一千个响应,那么生成其余响应将是非常浪费的,因此GitHub要求您一次请求不超过一百个。这是对REST api的标准度量,以提供良好的性能并避免DoS攻击。

相关内容

  • 没有找到相关文章

最新更新