youtube動画情報のスクレイピングをするには?
youtubeのAPIで動画の詳細情報を取得しているのですが、APIでは配信されていない情報も取得したくて、youtubeの動画の統計情報のスクレイピングを行おうと挑戦してみましたがうまく出来ません。以下のソースは取得した動画の統計情報をコンソール上に表示させるというものです。
要素「id="watch-insight-button"」をクリックすると、javascriptが実行されて、元々ある要素「id="watch-actions-area-container"」以下に要素「id="watch-actions-ajax"」が動的に生成されます。この生成された情報をコンソールに表示させたいのです。実行環境はGoogleChromeの「要素の検証」の「Console」で実行しました。
http://www.youtube.com/watch?v=xIP41E4B-bIへ行き、クロームのコンソールに以下を入力
/*1*/var elem = document.getElementById('watch-insight-button');
/*2*/var event = document.createEvent('MouseEvents');
/*3*/event.initEvent('click', true, false);
/*4*/elem.dispatchEvent(event);
/*5*/var el = document.getElementById('watch-actions-ajax');
/*6*/console.log(el.innerHTML);
実は行番号の1~4までを入力しエンターを押して実行し終わった後で、行番号の5,6を入力しエンターを押してというように分けて実行すればうまく表示されるのですが、わけあって本番環境は「phantom.js」で実行しているため、この動作1~6までを一気に実行させなければならなくて、そうするとうまく表示されないのです。
行番号1,2,3,4が実行された後で、以下のコードをはさみ一定時間待機してから行番号5,6を実行してみたのですが、これもうまくいきませんでした。
mysleep(5000);
function mysleep( waitMilliSeconds ) {
var startTime = ( new Date( ) ).getTime( );
while ( true ) {
if ( ( new Date( ) ).getTime( ) >= startTime + waitMilliSeconds ) break;
}
}
お礼
回答ありがとうございます。