0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python 3 Qiita API v2でユーザーの投稿した記事一覧を取得する

Last updated at Posted at 2020-06-12

本文

Python 3とQiita API v2でユーザーの投稿した記事一覧を取得するサンプルコードです。

この投稿では毎回APIを呼び出してJSONをダウンロードしていますが、実際にはサーバーへの優しさ(と回数制限)からローカルに保存して参照した方が適切かと思います。

import json
import urllib.request
from pprint import pp


def get_qiita_user_url(username):
    if not isinstance(username, str):
        raise TypeError()
    return f"https://qiita.com/api/v2/users/{username}"


def fetch_qiita_user(username):
    url = get_qiita_user_url(username)
    with urllib.request.urlopen(url) as f:
        return json.load(f)


def get_qiita_useritems_url(username, page, per_page):
    if not isinstance(username, str):
        raise TypeError()
    if not isinstance(page, int) or not isinstance(per_page, int):
        raise TypeError()
    if not (1 <= page <= 100) or not (1 <= per_page <= 100):
        raise ValueError()
    return f"https://qiita.com/api/v2/users/{username}/items?page={page}&per_page={per_page}"


def fetch_qiita_useritems(username, page, per_page):
    url = get_qiita_useritems_url(username, page, per_page)
    with urllib.request.urlopen(url) as f:
        return json.load(f)


def fetch_qiita_userallitems(username):
    userinfo = fetch_qiita_user(username)
    itemcount = userinfo["items_count"]
    useritems = []
    for page in range(1, 100):
        fetched = (page - 1) * 100
        if fetched > itemcount:
            break
        useritems.extend(fetch_qiita_useritems(username, page, 100))
        page += 1
    return useritems


# とりあえず自分のユーザー名を指定
username = "katabamisan"
useritems = fetch_qiita_userallitems(username)
titles = [entry["title"] for entry in useritems]
pp(titles)

注意

Qiita API v2ドキュメントによるとAPIは失敗時にエラーを表現するオブジェクトを含むレスポンスを返します。一方、Python 3のurllib.requestはこのときのステータスコードがエラーであることから例外を発生させます。この投稿では関数の呼び出し側が例外を処理することを想定してエラーオブジェクトは特別に処理していません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?