一つ前の投稿(歌詞取得スクリプト「SimpleLyrics」)からの続きです。
MyScriptsを使ってWebスクレイピングを行う手順を簡単に説明します。
ここではDOMは利用せずに、単純な正規表現を使った方法を紹介します。
1.Webページをダウンロードします。
// Webページを取得するための
// ユーティリティ関数
function httpGet(url) {
var xhr = new XMLHttpRequest();
xhr.open(“GET”, url, false);
xhr.send(null);
return xhr.responseText;
}
// 再生中のアーティスト名と曲タイトルを使って
// 検索用のURLを構築します
var listUrl=”http://m.kget.jp/result.php?cat=0&artist=”+encodeURIComponent(SONG.artist)+”&title=”+encodeURIComponent(SONG.title)+”&tieup=&phrase=”;
// Webサイトで検索して
// 検索結果のページを取得します(※1)
var listPage=httpGet(listUrl);
// 検索結果の1件目の曲IDを取り出して
// 歌詞ページのURLを構築します(※2)
var resultIndex=listPage.match(/song=[0-9]+/g)[0];
var lyricsUrl=”http://m.kget.jp/lyric.php?”+resultIndex;
// 歌詞ページを取得します
var lyricsPage=httpGet(lyricsUrl);
これでスクレイピング対象の文字列をlyricsPage変数に取得できました。
(ここでは検索処理を行なっていますが、検索が不要なWebページでは上記※1と※2は不要です)
2.lyricsPageから必要な箇所を抜き出します。
あらかじめ歌詞ページのソースを確認しておき、<div class=”lyric”>から始まる部分に歌詞があることを確認しておきます。
// ページの中から歌詞を抜き出します
lyricsPage.match(/<div class=”lyric”>n([sS]+?)<div/m);
([sS]+?) 部分に歌詞が入りますが、これはRegExp.$1内に保存されています。
3.最後に、歌詞部分の中に含まれている不要な改行タグ <br /> を一括削除します。
// 不要な改行タグを削除します
var lyrics=RegExp.$1.replace(/<br />/g, “”);
これで不要なタグが入っていない歌詞部分だけをlyrics変数に取り出すことが出来ました。
あとはこのデータを好きなように加工できます。
上記のURLを変更したり、スクレイピングの正規表現を変更していろいろと試してみると面白いと思います。