Qiita初投稿。頑張って書きます。
最近GitHubのAPIを使ってスクレイピングアプリ的なものを作りました。
題して「Github Star Rank」
https://app-rank-git1.herokuapp.com/
pythonとflaskを使用してます。
スターの数を取得して人気のリポジトリTop5を表示します。
どうやってAPIを叩いたかを自分用に記録していきます。
1、APIの取得
これがまず最初の難関。GitHub APIのページでスター関連(starring)のAPIを探したが、どれもランキングに使えそうな物が無い。例えばどのユーザーがどのリポジトリにスターを押したかとか、このリポジトリーには誰がスターを押したか、とかはAPIで叩ける。でもGitHub全体でどのリポジトリーがスター数を獲得したかは網羅してないようだ。
しかし色々調べていくと解決の鍵はsearchカテゴリーにあるんじゃないかと思えてきた。ドキュメントでも"Search API を使うと、GitHub で特定のアイテムを検索できます"と記されてる。盲点だった。
でもどうやってsearch APIでスターを探すのか、、
これまた調べていくとドンピシャなキーワードに辿り着く。
stars:>1
これをGitHubページの左上の検索窓で調べるだけ。
何じゃこりゃと思ったがこのキーワードでまさに私が欲しかった情報にありつけたのだ。
2、APIの作成
とりま上のリンクで人気リポジトリーが見れます。
これだけでもアプリ制作には十分なのだが、もう少し一捻りを加えて・・
検索結果のページの左側、Languagesの下にあるAdvanced Search で条件を絞り、2022年9月の結果を出します。
そうです。いっそのこと月刊人気リポジトリーアプリにしちゃおうというワケです。
の画像のようにCreated on the datesの箇所に日付を指定します。そんでSearchボタンを押して表示されたページのURLを取り出してAPIと組み合わせます。
ちなみにWritten in this languageで言語指定も出来ます。例えばPython関連の人気リポジトリーを調べても面白いかも
こんなん作りました。これで2022年9月の人気リポジトリーがjson形式で見れます。
あとはこちらをPythonのrequestsで読み取り加工していくのですが・・・
とりあえず今回はスターランキングに必要なAPIの取得方法について書きました。また別の記事でPython側とHTML側でどんな処理をしたのかを書いていきたいと思います。
あ、ちなみにデプロイしたアプリなんですがめっちゃショボい仕様になってます。改善の余地ありありです。
こんなアプリでも評価してくださる方、何かアドバイスをくださる方がいらっしゃたら尻尾振って喜びます。
Qiita記事初めて書いたがこんなんでいいのか?とりま今後ともよろしくお願いします。