<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何合法爬取 Github 的信息?

          共 2335字,需瀏覽 5分鐘

           ·

          2022-05-27 18:14

          《Java 面試指北》來啦!這是一份教你如何更高效地準(zhǔn)備面試的小冊,涵蓋常見八股文(系統(tǒng)設(shè)計、常見框架、分布式、高并發(fā) ......)、優(yōu)質(zhì)面經(jīng)等內(nèi)容。

          前段時間因?yàn)楣ぷ餍枰枰ト?Github 上的一些信息。于是我就查了一些資料,看看如何能爬取到對應(yīng)的信息。經(jīng)過查詢,發(fā)現(xiàn) Github 有開放一些 HTTP 接口,可以讓我們?nèi)フ{(diào)用。雖說直接調(diào)用 HTTP 接口也可以實(shí)現(xiàn),但每次都要做入?yún)⒑统鰠⒌姆庋b,使用上非常麻煩。

          經(jīng)過一段時間的搜索,我發(fā)現(xiàn)了一款名為 GitHub API for Java[1] 的 SDK,其對 Github 做了深度的封裝,使得我們可以更方便地調(diào)用 Github 的 HTTP 接口。今天就跟大家介紹一下這款 SDK 的簡單使用,方便朋友們后續(xù)使用。

          我在?一個比 Spring 更輕量級的 Web 框架!!!微軟、紅帽都在用這篇文章中推薦過這個項目,不知道看過這篇文章的小伙伴還有印象不。

          img

          鑒權(quán)方式

          Github 提供了多種權(quán)限方式,例如:賬號密碼方式、Personal Access Token 方式、JWT 方式等。這款 SDK 對于這幾種方式都支持了,并且還支持通過不同方式傳遞對應(yīng)鑒權(quán)信息,例如:傳參方式、配置文件方式、環(huán)境變量方式等等。這里我們只是簡單地爬取數(shù)據(jù),所以我們使用 Personal Access Token + 簡單傳參方式 就可以,其實(shí)例代碼如下所示,非常簡單。

          GitHub?github?=?new?GitHubBuilder().withOAuthToken("my_personal_token").build();

          Personal Access Token 的生成,在 Github Setting 的 Developer settings 中,如下圖所示。如果你實(shí)在找不到,那么可以參考官方文檔:創(chuàng)建個人訪問令牌 - GitHub Docs[2]

          img

          SDK 介紹

          通過上面的介紹,我們可以知道通過 GithubBuilder 就可以獲取一個 Github 對象,而該 Github 類對象其實(shí)就代表了 Github 這個網(wǎng)站。Github 類提供了各種方法,例如:獲取 Github 的 IP 地址列表、獲取所有組織列表等等,如下圖所示。

          img

          其實(shí)這個 SDK 正是通過這種面向?qū)ο蟮姆绞皆O(shè)計的,除了最常用的 Github 類之外,還有下面這些類:

          • GHRepository 類:代表 Github 上的一個倉庫
          • GHUser 類:代表 Github 上的一個用戶
          • GHTeam 類:代表 Github 上的一個 Team
          • GHBranch:代表倉庫的一個分支
          • 等等

          基本上 Github 上的一切都用一個類來表示,一切都可以抽象為一個對象,這正是面向?qū)ο蟮木杷凇?/strong> 而每個類都提供了非常多的方法,例如 GHUser 類提供了方法 isMemberOf(GHOrganization org) 方法來判斷一個用戶是否是某個組織的成員。

          更多方法,大家可以直接查詢其對應(yīng)的 API 文檔:Overview (GitHub API for Java 1.300 API)[3]

          快速入門

          首先,在項目中引入該 maven 依賴,如下所示。


          ????org.kohsuke
          ????github-api
          ????1.301

          接著直接寫一個 HelloGithub 類,如下所示。

          public?class?HelloGithub?{
          ????public?static?void?main(String[]?args)?throws?IOException?{
          ????????GitHub?github?=?new?GitHubBuilder().withOAuthToken("my_personal_token").build();
          ????????System.out.println(github.getMyself().getName());
          ????}
          }

          直接運(yùn)行該類便可獲取到的 token 對應(yīng)用戶的用戶名,如下圖所示。

          img

          這就是一個最簡單的演示了,麻雀雖小五臟俱全,更多的功能等待大家去探索發(fā)現(xiàn)~

          好了,這就是今天的簡單分享,希望大家喜歡。

          參考資料

          [1]

          GitHub API for Java: https://github-api.kohsuke.org/index.html

          [2]

          創(chuàng)建個人訪問令牌 - GitHub Docs: https://docs.github.com/cn/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

          [3]

          Overview (GitHub API for Java 1.300 API): https://github-api.kohsuke.org/apidocs/index.html

          ··········? END? ··············

          歡迎加入我的知識星球獲取更多面試干貨,《Java 面試指北》持續(xù)更新完善中!

          近期文章精選?:


          如果本文對你有幫助的話,歡迎點(diǎn)贊&在看&分享,這對我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。感謝????


          瀏覽 66
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产青娱乐在线视频 | 亚洲视频网站免费 | 超碰97人人操 | 日本人妻视频 | 热久久最新地址 |