【问题标题】:How to use GitHub API to get a repository's dependents information in GitHub?如何使用 GitHub API 在 GitHub 中获取存储库的依赖信息?
【发布时间】:2020-03-03 04:11:45
【问题描述】:

当我使用 GitHub API v4 获取一些信息时,我可以通过使用 repository.dependencyGraphManifests 轻松获取依赖项。但是我找不到任何方法来使用 GitHub API v4 来获取家属信息,尽管我可以在 Insights->Dependency Graph->Dependents 中看到它。 我想知道是否有任何可能的方式来获取 GitHub 存储库中的家属信息?无论是 GitHub API 还是其他。

【问题讨论】:

    标签: github graphql github-api


    【解决方案1】:

    根据 Bertrand Martel 的回答 (@bertrand-martel),不要忘记添加以下代码,以免您卡在第一页和第二页之间。换句话说,它会向前,然后向后;因为最初只有一个<a>标签,而下一页有两个,所以它选择第一个(“上一页”)并返回上一页。

    代码:

    ...
        paginationContainer = soup.find("div", {"class":"paginate-container"}).find_all('a')
        if len(paginationContainer) > 1:
            paginationContainer = paginationContainer[1]
        else:
            paginationContainer = paginationContainer[0]
    ...
    

    【讨论】:

      【解决方案2】:

      我认为您无法使用 Github API(Rest 或 Graphql)获取依赖项目,一种方法可能是使用像以下 脚本一样的抓取:

      import requests
      from bs4 import BeautifulSoup
      
      repo = "expressjs/express"
      page_num = 3
      url = 'https://github.com/{}/network/dependents'.format(repo)
      
      for i in range(page_num):
          print("GET " + url)
          r = requests.get(url)
          soup = BeautifulSoup(r.content, "html.parser")
      
          data = [
              "{}/{}".format(
                  t.find('a', {"data-repository-hovercards-enabled":""}).text,
                  t.find('a', {"data-hovercard-type":"repository"}).text
              )
              for t in soup.findAll("div", {"class": "Box-row"})
          ]
      
          print(data)
          print(len(data))
          paginationContainer = soup.find("div", {"class":"paginate-container"}).find('a')
          if paginationContainer:
              url = paginationContainer["href"]
          else:
              break
      

      Try this python script

      【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2019-12-11
      • 1970-01-01
      • 2016-03-18
      • 2017-09-01
      • 2015-04-13
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多