用爬蟲寫一個 GitHub Trending API

兼葭發表於2018-01-15

github.png

這學期打算做一個關於 GitHub 的 Android 應用,其中一個模組就是檢視 GitHub 當天,當週,當月的熱門專案和開發者。其實 GitHub 給了開發者相當豐富的 API 介面 developer.github.com/v3/,包括認證,搜尋,活動等介面,但就是沒有提供獲取 Trending 的介面。去 GitHub Trending 的主頁看了一下,並看了其 html 程式碼,發現想要的東西都可以用爬蟲爬去下來,於是就著手爬去資訊。


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

獲取熱門專案

路徑

/repo

引數

名稱 型別 描述
lang 字串 可選,熱門專案的語言
since 字串 可選,get請求引數,無這引數則自動獲取當天的熱門專案,引數值只有三個,分別是daily,weekly,monthly。

例如請求 https://trendings.herokuapp.com/repo?lang=java&since=weekly

返回結果:

//status code: 201
{
  "count": 25,
  "msg": "done",
  //專案集合
  "items": [
    {
      //專案貢獻者的頭像地址集合
      "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"
      ],
      //專案的地址
      "repo_link": "https://github.com/kdn251/interviews",
      //專案描述
      "desc": "Everything you need to know to get the job.",
      //專案倉庫
      "repo": "kdn251/interviews",
      //目前為止的的stars數
      "stars": "5,772",
       //目前為止的forks數
      "forks": "539",
      //專案所屬語言
      "lang": "Java",
      //今天或者這周或者這個月的starts數
      "added_stars": "4,591 stars this week"
    },
    .
    .
    .
  ]
}
複製程式碼

獲取熱門開發者

路徑

/developer

引數

名稱 型別 描述
lang 字串 可選,熱門開發者使用的主要語言
since 字串 可選,get請求引數,無這引數則自動獲取當天的熱門開發者,引數值只有三個,分別是daily,weekly,monthly。

請求 https://trendings.herokuapp.com/developer?lang=java&since=weekly

返回結果:

//status code: 201
{
  "count": 25,
  "msg": "done",
  //開發者集合
  "items": [
    {
      //開發者在GitHub上的使用者名稱
      "user": "google",
      //開發者在GitHub上的主頁連結
      "user_link": "https://github.com/google",
        //開發者的全名
      "full_name": "(Google)",
        // 開發者的頭像地址
      "developer_avatar": "https://avatars1.githubusercontent.com/u/1342004?v=3&s=96"
    },
    .
    .
    .
]
}
複製程式碼

獲 取GitHub 上的所有 trending 語言。

請求地址:https://trendings.herokuapp.com/lang

返回結果:

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

異常

有時候去訪問 GitHub 的 trending 時,會找不到熱門專案或者開發者的,這時就會返回如下的 JSON:

//status code: 404
{
  "msg": "Unavialiable.",
  "count":0,
  "items": []
}
複製程式碼

維護

若某個介面無法呼叫,請通過簡信或者郵箱 doforce@126.com 與我取得聯絡,我會盡快修復問題。

GitHub專案地址

相關文章