Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8902

よそ様の情報を簡単に参照できるWEBAPIが本当に簡単なのか体験してみた。

$
0
0
WEBAPIとやらを使うと簡単に情報を参照したりサービスを受けられるというので体験してみました。 今回、Qiitaのアカウントも作ってみたので、やってみたことを投稿します。 1.やってみたかったこと WEBAPIを使うと簡単にインターネット上の情報を参照したり、サービスを受けたりできるらしいが、本当に簡単なのか体験してみたい。 具体的には、Node.js+axsiosを使って、今後お世話になるであろうQiitaのWEBAPIを呼んでみる。 2.Qiitaの記事一覧を呼び出してみた APIリファレンスを参考に、記事の一覧を取得してみる。 API.js const axios = require('axios'); async function main() { let response = await axios.get('https://qiita.com/api/v2/items?page=1'); for(var i in response.data){ console.log(response.data[i].title); //記事のタイトル } } main(); たったこれだけのコードでQiitaのサーバから記事の一覧(タイトル)を取得できた!これは本当に簡単だわ。 これは面白い!といろいろ呼びまくっていたら、なにやらエラーしか返らなくなった。。。 3.認証しないといろいろ実験できないぞ! さすがに、「だれにでも」「いくらでも」は使わせてくれないようです。 APIリファレンスに以下の記載が。 利用制限 認証している状態ではユーザごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までリクエストを受け付けます 認証をしないとトライ&エラーできない。初心者なので、めちゃめちゃトライ&エラーしてしまいました。。。 Qiitaさんよくわからずめちゃめちゃ叩いてごめんなさい。 というわけで認証しました。(アクセストークンを取得する)   1.Qiitaの設定画面   2.アプリケーションをクリック   3.新しいトークンを発行をクリック   4.アクセストークンを発行する    5.呼び出すときに、↓こんな感じにする。 XXXXXに発行したアクセストークンを設定する。 Auth.js const axios = require('axios'); async function main() { let response = await axios.get('https://qiita.com/api/v2/items?page=1', { headers: { 'Authorization': `Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` } }) for(var i in response.data){ console.log(response.data[i].title); //記事のタイトル } } main(); これでお試しが捗るようになりました。 4.WEBAPIは簡単に情報を参照できるけれど、なんでも参照できるわけではない。 せっかくだから何か作ろうと思って妄想してみた  ・人はだいたいどれくらいの期間でQiitaに投稿しなくなるのか?を分析し、自分の今後のQiitaLifeに活かす!とか。   →APIリファレンスを参照してみたけれど、必要な情報がとれなそうな。。  ・どんな投稿をきっかけにフォロアーがつき始めるのか?ターニングポイントみたいなのがわかると面白そう   →おなじくそこにたどり着くためのデータがとれなそう???  ・などなどいろいろ妄想してみたり、データをとってみたりしたのだけれど、   QiitaのAPIだけでは必要な情報を参照できない様子。もうちょっと時間をかけて調べたら意外といけたりするのだろう。    そんなこんなで、「WEBAPIがあればなんでもできちゃう!」わけではないということがわかった。 こんなデータ欲しいのだけれど、、とお願いすればAPIを作ってくれるのかしらね。 5.というわけで、とりえあず作ってみた。 つくったもの これから「くる」タグ発見機。 タグについては、  ・フォローしている人数、  ・タグがつけられた記事の数 などがAPIで参照できるようなので、これらの数値を統計・分析することで 「 このタグ来てるぜ!くるぜ!を早期検知して、トレンドを先取りだ!うしし」 としたいぜ! ただ、、取得できるのは履歴ではなく、現時点(ナウ)のようにみえるので、とりえあず蓄積してみることにした。 axiosでQiitaから情報を参照して、node-adodbというライブラリを使って、パソコン内のmdb(MS-Access)に保存することにした。 これを毎日エージェントかなにかで定期実行して、日ごとの値の変化を別途解析する!という考え方だ! なかなかしょぼいぜ! TAG.js const axios = require('axios'); const ADODB = require('node-adodb'); const connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;'); async function main() { //TAGの情報を保管した日付を取得する(処理日) var date = new Date(); var year_str = date.getFullYear(); var month_str = 1 + date.getMonth(); var day_str = date.getDate() //見やすいように日付をフォーマット var format_regdate = 'YYYY-MM-DD'; format_regdate = format_regdate.replace(/YYYY/g, year_str); format_regdate = format_regdate.replace(/MM/g, month_str); format_regdate = format_regdate.replace(/DD/g, day_str); //タグの一覧を取得する ひとまずお試しで100件とってみよう。  let parm = 'https://qiita.com/api/v2/tags?page=1&per_page=100' let response = await axios.get(parm, { headers: { 'Authorization': `Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` } }) //取得したタグ一覧(レコード)からタグの情報を取得 for(var i in response.data){ let id = response.data[i].id; //タグID=タグの名称 let items_count = (response.data[i].items_count); //タグがつけられた記事の数 let followers_count = (response.data[i].followers_count); //タグをフォローした人のかず //データベース(TBL1)のスキーマ TAG,RegDate,DocCount,FolCount// //とりあえずDBに保存しよう。 connection.execute('INSERT INTO TBL1 VALUES ("' + id + '","' + format_regdate + '",' + items_count + "," + followers_count + ');'); } } main(); 素敵な統計理論(?)をつかって、「これから来る!」をロジカルに発報してほしいのだが、その手の知識なんて持ち合わせているわけがなく、、  ・とりえあずDB(MS-Accedd)を参照して、  ・「タグ付けされた文書数」が前日よりも大幅に増えていたら発報する テーブルぐりぐりscriptを別途作成。ぐーりぐーり、、、 結果(テストデータ使用) うーん 効果は皆無だ! こんなんじゃ、うしうしでけない!! データ分析のスキルも欲しいものですなぁ。 そんなこんなしているうちに、本日はタイムアップ!!! おつかれさまでしたー 感想  ・APIで情報を取得するのは意外と簡単。でも、ほしい情報がサクッと取得できるわけではないので、目的達成までの道のりは簡単ではない  ・Markdown記法を初めて使った!こっちのほうが実は新鮮な体験だったりして・・・ こうやってるのねマークダウン。

Viewing all articles
Browse latest Browse all 8902

Trending Articles