2011-08-08 11 views
0

JavaScriptを使用してコンテンツの多くを読み込むウェブサイトからデータをスクラップしようとしています。今私はjSoupをHTMLページを解析するために使用していますが、コンテンツの多くはjavascriptを使用してロードされているため、必要なデータを解析できませんでした。データのスクレイピング。ファイルを保存?

このjavascriptのコンテンツを取得するにはどうすればよいですか?最初にページを保存し、jSoupを使用して読み込んで解析する必要がありますか?もしそうなら、私は保存する前にjavascriptのコンテンツをロードするために何を使うべきですか? HTMLを出力することをお勧めするAPIはありますか?

現在Javaを使用しています。

答えて

1

pjscrape(免責事項:これは私のプロジェクトです)をチェックアウトすることができます。 PhantomJSを使用するコマンドラインツールで、JavaScriptとjQueryをフルブラウザで使用してスクレイピングすることができます。特に、ページの「準備完了」機能を定義して機能が壊れるのを待つことができます特定のDOM要素など)はtrueを返します。

その他のオプションは、ページに応じてFirebugのようなコンソールを使用して、どのデータがロードされているか(つまり、ページ上のAJAX呼び出しによってどのURLが取得されているか)を把握し、それらのURL

0

データがjavascriptで生成された場合、データはダウンロードされたページにあります。 普通のHTMLやテキストの解析と同じように、その場で直接解析する方がよいでしょう。 jSoup APIでトークンを分離できない場合は、直接文字列オプションを使用してプレーンテキストとして解析します。

0

私はhtmlUnitを使ってみましたが、非常に遅いと感じました。

私の目的のために働いたjava内のcurlコマンドライン関数を使用して終了しました。

String command = "curl "+url; 
Process p = Runtime.getRuntime().exec(command); 

BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((s = stdInput.readLine()) != null) { 
    html = html+s+"\n"; 
} 

return html;