🚀

【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があれば何でもできる!()

GitHubで編集を提案

Discussion