我試圖在 Github 組織中獲取依賴于特定存盤庫的存盤庫串列。
例如。如果我有稱為庫string_utils,我想搜索的庫(僅名稱而不是檔案,而不是內容,只是版本庫的名字),其中包含類似import string_utils。
當我使用 Github 瀏覽器進行搜索時,我得到了存盤庫中的所有檔案及其內容的特定匹配行。我只想要存盤庫名稱。
我結束將請求復制為 curl 請求,并執行一些 shell 腳本:
query_string="q=<query search> -repo:<repo>"
url="https://<url stuff>/search?q=${github_query}"
grep_regex='<a. . href="/[^\/] /\K[^\"] (?=">)'
declare -a dependents="$(
curl -G \
--data-urlencode "${query_string}" \
--data-urlencode "type=Code" \
-H "${COOKIE_HEADER}" \
--silent \
"$url" \
| grep -Po "$grep_regex" \
| awk '!unique[$0] '
)"
但是我得到的存盤庫比預期的要少。我認為這是因為分頁問題。
有誰知道如何在沒有分頁的情況下獲得所有結果,或者更好的方法?
uj5u.com熱心網友回復:
為此,您應該使用 GitHub REST API。有特定的搜索端點。該 API 是為機器可讀的互動而設計的,而使用像您這樣的網路抓取技術可能會隨時中斷,并且很可能會被阻止作為反濫用措施。
但是,請注意 REST API 回應仍然是分頁的。那是因為 GitHub 不知道您需要多少回復,而且您的請求可能會有很多回復(對于搜索,可能有數百萬個)。如果你只想要前一千個,那么生成剩余的回應會非常浪費,所以 GitHub 要求你一次請求不超過一百個。這是 REST API 的標準措施,可提供良好的性能并避免 DoS 攻擊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332919.html
