Python Qiita API を使ってキーワード検索
Qiita API ドキュメント
https://qiita.com/api/v2/docs
アクセストークンの取得
設定 > アプリケーションからアクセストークンを発行
https://qiita.com/settings/applications
検索クエリ
page ... ページ番号(1~100)
per_page ... 1ページあたりに含まれる要素数
query ... 検索クエリ
検索オプション ... https://help.qiita.com/ja/articles/qiita-search-options
例:PHPタグを含み作成日付2021-02-09の投稿を取得
注)日付検索条件はUTC時刻を元に行われる模様
https://qiita.com/api/v2/items?page=1&per_page=100&query=tag:PHP+created:>=2021-02-09+created:<=2021-02-09
Python取得
QIITA_ACCESS_TOKENは アクセストークンの取得
で取得
リクエストして結果をJsonで取得
DataFrameに保存
search = qiita.get_search("Python", "2021-02-08", "2021-02-10")
QIITA_ACCESS_TOKEN = ""
PER_PAGE = 100
def get_search(tag: str, start_date: str, end_date: str, count: int = 1000):
df = pd.DataFrame(
columns=[
"created_at",
"id",
"title",
"likes_count",
"url",
"user_id",
"user_name",
]
)
loop = ceil(count / PER_PAGE)
page = 1
for v in range(loop):
page += v
per_page = PER_PAGE if count - len(df) > PER_PAGE else count - len(df)
url = (
f"https://qiita.com/api/v2/items?page={page}&per_page={per_page}&"
f"query=tag:{tag}+created:>={start_date}+created:<={end_date}"
)
headers = {"Authorization": f"Bearer {QIITA_ACCESS_TOKEN}"}
response = requests.get(url, headers=headers)
text = json.loads(response.text)
if not text:
break
for v2 in text:
df = df.append(
{
"created_at": v2["created_at"],
"id": v2["id"],
"title": v2["title"],
"likes_count": v2["likes_count"],
"url": v2["url"],
"user_id": v2["user"]["id"],
"user_name": v2["user"]["name"],
},
ignore_index=True,
)
return df
結果
created_at id ... user_id user_name
0 2021-02-10T22:39:34+09:00 f64d7918bb3e39e897a4 ... tancematrix
1 2021-02-10T22:33:24+09:00 7c1ffc2112252730743c ... k_yokozuka yokozuka kento
2 2021-02-10T22:32:07+09:00 6f2213e9ecfcfc37d5b6 ... k_yokozuka yokozuka kento
3 2021-02-10T22:02:35+09:00 28f12e509f10f35fd9cb ... RyosukeHattori Raylan
4 2021-02-10T21:27:46+09:00 6a390e86ff8bd22aa5e8 ... AKpirion
.. ... ... ... ... ...
87 2021-02-08T11:26:30+09:00 dae3d01cb1ff6ecb074e ... ohisama@github
88 2021-02-08T11:02:58+09:00 aaeb0dccbb30e17bfba9 ... etern
89 2021-02-08T10:58:13+09:00 2d14c71178f834dfc985 ... ohisama@github
90 2021-02-08T10:13:23+09:00 1f90724a797f1b63a9c9 ... morita-toyscreation TAKASHI MORITA
91 2021-02-08T10:00:57+09:00 ff32350710617bd50544 ... yudwig
Qiita投稿を取得できました
いいね!と思ったら LGTM お願いします
【PR】週末ハッカソンというイベントやってます! → https://weekend-hackathon.toyscreation.jp/about/