Beispielcode zum Abrufen einer Liste von Artikeln, die von Benutzern in Python 3 und [Qiita API v2] veröffentlicht wurden (https://qiita.com/api/v2/docs).
In diesem Beitrag rufe ich die API jedes Mal auf, um den JSON herunterzuladen, aber ich denke, es ist eigentlich angemessener, ihn lokal zu speichern und auf ihn zu verweisen, da er für den Server freundlich ist (und die Anzahl der Zeiten begrenzt ist).
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
#Geben Sie vorerst Ihren Benutzernamen an
username = "katabamisan"
useritems = fetch_qiita_userallitems(username)
titles = [entry["title"] for entry in useritems]
pp(titles)
Gemäß der Qiita API v2-Dokumentation gibt die API eine Antwort zurück, die ein Objekt enthält, das einen Fehler bei einem Fehler darstellt. Andererseits löst Python 3 urllib.request
eine Ausnahme aus, da der Statuscode zu diesem Zeitpunkt ein Fehler ist. In diesem Beitrag werden Fehlerobjekte nicht speziell behandelt, vorausgesetzt, der Aufrufer der Funktion behandelt die Ausnahme.