私はChromeでHTMLを見て、Nokogiriを使ってデータを取得してサイトを削り取ろうとしています。問題は、一部のタグが動的に生成され、open-uriを使用しているときにopen(url)要求で表示されないということです。オープンURLのようなツールのコンテンツを動的に生成するサイトを強制的に強制する方法はありますか?Nokogiri/Open URIで動的に生成されたHTMLを取得する
5
A
答えて
4
open-uriで読んでも必要なコンテンツが得られない場合は、クライアントがJavascriptでコンテンツを生成している可能性があります。
これは良いニュースです。ページが作成したAJAXリクエストを調べることで、探しているコンテンツのJSONフィードが見つかる可能性があります。これを直接リクエストして解析できます。これにより、HTMLを掘り起こすことなくデータを手に入れることができます。
何らかの理由でうまく動作しない場合は、何らかのブラウザでページを開いて、クライアントサイドのJavaScriptを実行させ、結果のDOMをHTMLにダンプする必要があります。 PhantomJSのようなものは、この種の仕事のための優れた選択肢です。
+0
チップ#1は私に1トンの時間を節約しました。 –
関連する問題
- 1. Meteor動的に生成された値を取得する
- 2. JavaScriptで生成されたHTMLを取得するには
- 3. 動的に生成されたhtml要素の角度取得値
- 4. 動的に生成されるテキストフィールドの値を取得する
- 5. htmlからphpで生成されたjsonを取得する
- 6. WCFサービスで生成されたHTMLを取得する
- 7. 動的に作成されたHTMLコントロールの値を取得する
- 8. レンダリングする動的に生成されたVueJSコンポーネントを取得する方法
- 9. androidで動的に作成されたビューを取得する
- 10. 動的に生成されたJSONをPHPに取得する方法
- 11. 角度5で動的に生成されたhtmlへのリダイレクト
- 12. JavaScriptで生成された動的入力から値を取得する
- 13. 動的に生成されたデータの合計を取得する方法
- 14. 動的に生成されたフォームからデータを取得する
- 15. 動的に生成されたModalのIDを取得する方法
- 16. は、動的に生成されたボタンのIDを取得する方法
- 17. 動的に生成されたボタンからOnClick値を取得する
- 18. 動的に生成されたクラスから属性を取得する
- 19. 動的に生成されたHTTPリクエスト値を取得する方法jmeter?
- 20. 動的に生成されたdiv IDを取得するjsコード
- 21. mediawiki APIクエリから生成されたHTMLを取得する
- 22. 動的に生成されたHTMLにバインドされたイベントは自動的に呼び出されます。
- 23. AngularJSで動的に生成されたHTMLページにコントローラをバインドするには?
- 24. 動的に生成されたHTMLテーブルのメッセージをポップアップ
- 25. Laravelコントローラで動的に生成されたテキストエリアの値を取得
- 26. 動的に生成されたタイルを取得できません(Windows Phone)
- 27. AngularJSで動的に生成されたドロップダウンの選択値を取得
- 28. 動的に作成されたフラグメントを取得する
- 29. bokehで生成されたHTMLテーブルの値を動的に変更する
- 30. 動的に生成されたテキスト要素からval()を取得します
[機械化](http://mechanize.rubyforge.org/)を見てください。私はそれがあなたが望むことをするかもしれないと思います。 – Aaronneyer
*このサイトがどのようにコンテンツを生成するかによって、まずJavaScriptを実行する必要があります。 – tessi
複雑なウェブサイトで機械化されることがあります。 JRubyがオプションで、mechanizeが機能しない場合は、[Celerity](http://celerity.rubyforge.org/)も見ていきます。 – yonosoytu