用爬蟲(chóng)寫(xiě)一個(gè) GitHub Trending API

github.png

這學(xué)期打算做一個(gè)關(guān)于 GitHub 的 Android 應(yīng)用,其中一個(gè)模塊就是查看 GitHub 當(dāng)天捡遍,當(dāng)周慕趴,當(dāng)月的熱門項(xiàng)目和開(kāi)發(fā)者。其實(shí) GitHub 給了開(kāi)發(fā)者相當(dāng)豐富的 API 接口 https://developer.github.com/v3/弱卡,包括認(rèn)證,搜索住册,活動(dòng)等接口婶博,但就是沒(méi)有提供獲取 Trending 的接口。去 GitHub Trending 的主頁(yè)看了一下荧飞,并看了其 html 代碼凡人,發(fā)現(xiàn)想要的東西都可以用爬蟲(chóng)爬去下來(lái),于是就著手爬去信息叹阔。


以下所有請(qǐng)求都為get請(qǐng)求,請(qǐng)求主地址為https://trendings.herokuapp.com

獲取熱門項(xiàng)目

路徑

/repo

參數(shù)

名稱 類型 描述
lang 字符串 可選挠轴,熱門項(xiàng)目的語(yǔ)言
since 字符串 可選,get請(qǐng)求參數(shù)耳幢,無(wú)這參數(shù)則自動(dòng)獲取當(dāng)天的熱門項(xiàng)目岸晦,參數(shù)值只有三個(gè),分別是daily,weekly,monthly睛藻。

例如請(qǐng)求 https://trendings.herokuapp.com/repo?lang=java&since=weekly

返回結(jié)果:

//status code: 201
{
  "count": 25,
  "msg": "done",
  //項(xiàng)目集合
  "items": [
    {
      //項(xiàng)目貢獻(xiàn)者的頭像地址集合
      "avatars": [
        "https://avatars0.githubusercontent.com/u/16903644?v=3&s=40",
        "https://avatars2.githubusercontent.com/u/8622362?v=3&s=40",
        "https://avatars0.githubusercontent.com/u/10773353?v=3&s=40",
        "https://avatars3.githubusercontent.com/u/6392550?v=3&s=40",
        "https://avatars1.githubusercontent.com/u/3837836?v=3&s=40"
      ],
      //項(xiàng)目的地址
      "repo_link": "https://github.com/kdn251/interviews",
      //項(xiàng)目描述
      "desc": "Everything you need to know to get the job.",
      //項(xiàng)目倉(cāng)庫(kù)
      "repo": "kdn251/interviews",
      //目前為止的的stars數(shù)
      "stars": "5,772",
       //目前為止的forks數(shù)
      "forks": "539",
      //項(xiàng)目所屬語(yǔ)言
      "lang": "Java",
      //今天或者這周或者這個(gè)月的starts數(shù)
      "added_stars": "4,591 stars this week"
    },
    .
    .
    .
  ]
}

獲取熱門開(kāi)發(fā)者

路徑

/developer

參數(shù)

名稱 類型 描述
lang 字符串 可選启上,熱門開(kāi)發(fā)者使用的主要語(yǔ)言
since 字符串 可選,get請(qǐng)求參數(shù)店印,無(wú)這參數(shù)則自動(dòng)獲取當(dāng)天的熱門開(kāi)發(fā)者冈在,參數(shù)值只有三個(gè),分別是daily,weekly,monthly按摘。

請(qǐng)求 https://trendings.herokuapp.com/developer?lang=java&since=weekly

返回結(jié)果:

//status code: 201
{
  "count": 25,
  "msg": "done",
  //開(kāi)發(fā)者集合
  "items": [
    {
      //開(kāi)發(fā)者在GitHub上的用戶名
      "user": "google",
      //開(kāi)發(fā)者在GitHub上的主頁(yè)鏈接
      "user_link": "https://github.com/google",
        //開(kāi)發(fā)者的全名
      "full_name": "(Google)",
        // 開(kāi)發(fā)者的頭像地址
      "developer_avatar": "https://avatars1.githubusercontent.com/u/1342004?v=3&s=96"
    },
    .
    .
    .
]
}

獲 取GitHub 上的所有 trending 語(yǔ)言包券。

請(qǐng)求地址:https://trendings.herokuapp.com/lang

返回結(jié)果:

//status code: 201
{
    "count": 464,
    "items": [
        "1C-Enterprise",
        "ABAP",
        "ABNF",
        "ActionScript",
        "Ada",
        .
        .
        .
        "YANG",
        "Zephir",
        "Zimpl"
    ],
    "msg": "suc"
}

異常

有時(shí)候去訪問(wèn) GitHub 的 trending 時(shí),會(huì)找不到熱門項(xiàng)目或者開(kāi)發(fā)者的,這時(shí)就會(huì)返回如下的 JSON:

//status code: 404
{
  "msg": "Unavialiable.",
  "count":0,
  "items": []
}

維護(hù)

若某個(gè)接口無(wú)法調(diào)用,請(qǐng)通過(guò)簡(jiǎn)信或者郵箱 doforce@126.com 與我取得聯(lián)系炫贤,我會(huì)盡快修復(fù)問(wèn)題溅固。

GitHub項(xiàng)目地址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市照激,隨后出現(xiàn)的幾起案子发魄,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件励幼,死亡現(xiàn)場(chǎng)離奇詭異汰寓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)苹粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門有滑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嵌削,你說(shuō)我怎么就攤上這事毛好。” “怎么了苛秕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵肌访,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我艇劫,道長(zhǎng)吼驶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任店煞,我火速辦了婚禮蟹演,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘顷蟀。我一直安慰自己酒请,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布鸣个。 她就那樣靜靜地躺著羞反,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囤萤。 梳的紋絲不亂的頭發(fā)上苟弛,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音阁将,去河邊找鬼。 笑死右遭,一個(gè)胖子當(dāng)著我的面吹牛做盅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窘哈,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吹榴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了滚婉?” 一聲冷哼從身側(cè)響起图筹,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后远剩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扣溺,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瓜晤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锥余。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痢掠,死狀恐怖驱犹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情足画,我是刑警寧澤雄驹,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站淹辞,受9級(jí)特大地震影響医舆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桑涎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一彬向、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧攻冷,春花似錦娃胆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至禁谦,卻和暖如春胁黑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背州泊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工丧蘸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遥皂。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓力喷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親演训。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弟孟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,434評(píng)論 2 45
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議样悟。它實(shí)...
    香橙柚子閱讀 23,869評(píng)論 8 183
  • 那天拂募, 遇見(jiàn)她庭猩, 在她最美的芳華! 怦然心...
    航仔_6ada閱讀 493評(píng)論 0 1
  • 一個(gè)朋友發(fā)信息過(guò)來(lái)陈症,“你有沒(méi)有關(guān)注什么美食的公眾號(hào)蔼水?我這邊要弄個(gè)茶樓的公眾號(hào)情组,想找?guī)讉€(gè)來(lái)學(xué)習(xí)一下” 我翻了一下關(guān)注...
    瑰琦2020閱讀 171評(píng)論 2 6
  • 老實(shí)說(shuō)我是個(gè)非常不會(huì)花錢的人田绑,怎么講嘁信,就是無(wú)論是逛商場(chǎng)還是超市于样,購(gòu)買東西基本都是隨心所欲。雖然說(shuō)女孩子花錢哪有什么...
    瓶子樂(lè)悠悠閱讀 1,093評(píng)論 1 7