🚀
【curl】zenn個人アカウントの全記事の情報を取得する【webスクレイピング】
はじめに
本記事では,zennにおける個人アカウントに紐づいたすべての記事の情報をcurlのみで取得する方法を紹介します.
webスクレイピングとは書いていますが,実際にはzennのwebAPIに対するリバースエンジニアリングに近いです.
モチベーション
先日,zennの個人アカウントに紐づいた記事のタグ情報からwordcloudを作成する方法について調べていたところ,
Seleniumなどのツールを利用したものが多く紹介されていました.
ただ,これcurlで十分なんじゃないか?と思ったので試してみました.
ブラウザ上での調査
まず,個人アカウントの全記事が見れる場所は個人のトップページなので,このページを表示する際にgetしてくる情報を見てみます(下図).

この中のarticlesの中に全記事の情報が辞書型で含まれています.
curlでの取得
curlでの取得方法は以下です.
$ curl https://zenn.dev/api/articles?username=<username>
{
"articles": [
{
"id":473576,
"post_type":"Article",
"slug":"54c50ba3163f17",
"comments_count":0,
"liked_count":1,
...
"path":"/dozenkomeda/articles/54c50ba3163f17",
"principal_type":"User",
"title":"discord ボイスチャットで遊んでみた",
...
},{...}
]
}
この中のpathに含まれる情報が各記事のURLになっています.
タグ情報の取得
記事のURLが取得できれば,あとは静的な解析で記事のタグ情報を特定可能です.
以下の画像のように"TopicList_item__M3DS"を探すと,近くからタグの情報を取得可能です.

まとめ
curlがあれば何でもできる!()
Discussion