2013-07-07 6 views
5

私はChromeでHTMLを見て、Nokogiriを使ってデータを取得してサイトを削り取ろうとしています。問題は、一部のタグが動的に生成され、open-uriを使用しているときにopen(url)要求で表示されないということです。オープンURLのようなツールのコンテンツを動的に生成するサイトを強制的に強制する方法はありますか?Nokogiri/Open URIで動的に生成されたHTMLを取得する

+1

[機械化](http://mechanize.rubyforge.org/)を見てください。私はそれがあなたが望むことをするかもしれないと思います。 – Aaronneyer

+2

*このサイトがどのようにコンテンツを生成するかによって、まずJavaScriptを実行する必要があります。 – tessi

+0

複雑なウェブサイトで機械化されることがあります。 JRubyがオプションで、mechanizeが機能しない場合は、[Celerity](http://celerity.rubyforge.org/)も見ていきます。 – yonosoytu

答えて

4

open-uriで読んでも必要なコンテンツが得られない場合は、クライアントがJavascriptでコンテンツを生成している可能性があります。

これは良いニュースです。ページが作成したAJAXリクエストを調べることで、探しているコンテンツのJSONフィードが見つかる可能性があります。これを直接リクエストして解析できます。これにより、HTMLを掘り起こすことなくデータを手に入れることができます。

何らかの理由でうまく動作しない場合は、何らかのブラウザでページを開いて、クライアントサイドのJavaScriptを実行させ、結果のDOMをHTMLにダンプする必要があります。 PhantomJSのようなものは、この種の仕事のための優れた選択肢です。

+0

チップ#1は私に1トンの時間を節約しました。 –

関連する問題