ぬぬん!

やってみたこと,思ったこと

素朴な方法でwikiからアニメを取得した話

アニメの一覧を取得しないと夜も眠れない病にかかってしまった

やり方を模索していたところ
こちらのブログに辿り着き
素朴にwikiスクレイピングして取得することにした

rei19.hatenablog.com


www.npmjs.com



簡単!便利!のモジュールをありがたく使わせていただき
スクレイピング開始

// モジュール読み込み
var client = require('cheerio-httpcli');

var date = new Date();
var fullYear = date.getFullYear();
for (var year = 2000; year <= fullYear; year++) {
  var text = year + '年のテレビアニメ';
  var search_txt = encodeURIComponent(text);
  // スクレイピング開始
  client.fetch('https://ja.wikipedia.org/wiki/Category:' + search_txt, {}, function (err, $, res) {
    // アニメタイトルを取得
    $('.mw-category-group a').each(function() {
      console.log('"' + $(this).text() + '",' + $(this).attr('href'));
    });
    
    // 2ページがあったとき
    var nextPageLink = $("a:contains('次のページ')").attr('href')
    if (nextPageLink) {
      client.fetch('https://ja.wikipedia.org/' + nextPageLink, {}, function (err, $, res) {
          // 記事のタイトルを取得
          $('.mw-category-group a').each(function() {
            console.log('"' + $(this).text() + '",' + $(this).attr('href'));
          });
      });
    }
  });
}

こうすると、アニメのリストがガガガーーーーっと出てくる

ただし、問題が多々ある

  • 全部取れてるかわからない←ひどい
  • 3ページに渡ってたらもうダメ←一応確認して2ページ目までだったからいいか
  • 非同期処理が入ってないから、なんかヤバそう←/(^o^)\


一応それっぽいリストが出来たので
今回はおk
(「完ぺきを求める前にまず完成させろ」というありがたいお言葉の元にやった)

他に考えてた方法

対象がwikiだから公式のAPI使おうとか
qiita.com


SQL書くかーーーとかも考えたけど
littlewing.hatenablog.com

パパっと雑でもいいから早くデータを取れる方法はやっぱスクレイピングだった

雑なコード

github.com