『プログラミング』noteの抽出ツールを作ってみたいのじゃ(1)
プログラムの記事に対して「はなこ☆さん」が反応してくれた!!
「こんなツールが作りたいというのがあれば試しますよ」とコメントしたところ、以下のような機能は可能かという話になりました。
▼作りたい機能
・記事に「スキ」等を付けたユーザーを抽出
・抽出したデータからリストを作成
・一定時間ごとにプログラムを実行して更新
スキ等ということは、おそらく「コメント」「サポート」「記事埋め込み」のような他のアクションについても抽出したいということだと思います。
はなこ☆さんのお話内容からして、急ぎで欲しいのかなと思ってコメントいただいたその日にプログラムを見てみたのですが…………
まだできてません(笑)
理解できずに進まないところがあって、その解説を今回は書いていこうかなと。もしかしたら、「もう必要なくなりました」と思っているかもしれませんが、今後私が必要になってくるためまとめておきます!
🌸試したこと
まず、記事の情報を持ってくるAPIは以下です。
■記事情報API
https://note.com/api/v1/notes/記事のID
■記事のIDって何?
記事URLの一番右側の文字列
https://note.com/syakai_hutekigou/n/ここ
※マガジンから開いたりするとURLが変わります。
■API指定例(私の記事です)
https://note.com/api/v1/notes/n0fcf3f358cdb
▼参考記事
API指定例で指定したURLを
Firefoxで実行すると……
何やら色々でてきましたが、スクロールしていくと「likes」というとこがでてきます。
そこに「スキ」をしたユーザーが入っているようです。おぉ抽出できそう。実際にnoteからスキを見てみると……
同じ順番で表示されています。スキをしたユーザーを抽出するのは、このAPIでできそうですね。
しかし、先程のURL実行結果を見ていくと、スキをしたユーザーが一部しか表示されていないことがわかります。
noteのほうで確認すると……
どうやら「もっとみる」の前まで表示されているようです。ここで私はわからなくなりました。
API実行結果上で「もっとみる」に該当するデータが見つからなかったです。「page」のようなわかりやすいものがあればいいのですが、ないように思えました。
ツイッターAPIでは「next_cursor_str」が次のページ数を見るというものになるんですが、そういったものが見つかればいいんですけど。わかる方がいたら教えてほしいです。
🌸他の方法
Pythonでブラウザ上の操作を自動化する方法があります。APIを使わなくてもたぶんそれでできるかもしれません。
▼使うもの
■seleniumライブラリ
WEB上の操作をプログラムから実行できるやつ
■beautifulsoup4ライブラリ
HTMLやXMLのデータを取得できるやつ
■ChromeDriver
プログラムから動かす用のChrome
ただ、微妙な気もします。
▼微妙な理由
・API使用時と比較して実行に時間がかかる
・環境構築がめんどくさいと思う
私は環境構築しておりますが、
今回は教えるのが目的だったので
つまづく箇所をなるべく減らしたい
てな感じだったわけなのです。
決して無視してたわけじゃないんです(笑)。
見てたけどわからんかったんよ~役に立てずに申し訳ない。
またわかったことあったら続きの記事で書きたいと思います。
⇩ ⇩ ⇩
ここで記事を終わろうとしていましたが、ある方法を思いつきました。GAS(Google Apps Script)を使った方法です。noteに登録しているのがGmailだったら使えるロジックです。次の記事でまとめます。
この記事が気に入ったらサポートをしてみませんか?