2012-01-12 3 views
9

コンポーネントを動的に読み込むWebページを傷つけたい。 このページにはonloadスクリプトがあり、ブラウザにURLを入力してから3〜5秒後に完全なページが表示されます。機械化がウェブページの「フル」ロードを待つ方法を教えてください。

私がbr.open('URL')と呼ぶと、問題は0秒でWebページになります。 HTML(私が望む)とbr.open('URL')の結果の間に3〜5秒後の差があります。

答えて

1

機械化された豊富なjavascriptのコンテンツでWebページを操作することはそれほど簡単ではありませんが、さまざまな状況に応じて必要なものを得る方法があります。いくつかのJSONの要求がコンテンツを作成するために行われた場合

  • 、あなたはURLとすると、それを適切に参加しようと、その後、コンテンツを取得するために応答を解析しようとすることを呼び出すことができます。

  • いくつかのフォームを使用する必要がある場合は、いくつかのフォームフィールドを作成し、それらの値をmechanize内に設定できます。または、POSTまたはGETデータ(引用符など)をエンコードするメソッドを作成し、mechanize.browser.openメソッドで送信してください。

  • ページにJavaScriptベースのセキュリティ機能(投稿する前にデータを形成する特殊なエンコーディングなど)がある場合は、javacriptアプリケーションサーバーのようなnode.jsを使用していくつかのJavaScriptコードブロックを処理できます。

しかし、実際には、上記のオプションの一部を行うのは容易ではない、とあなたはこのようなプロジェクトのための機械化使用する前に二度考える必要があります。

11

あなたが抱えている問題は、WebページがJavaScriptエンジンを介してWebブラウザにレンダリングされていることです。しかし、mechanizeには自力でJavaScriptを実行する能力がありません。どれくらい待っていても、機械化だけで欠けているHTMLを手に入れることはできません。

動的に生成されたコンテンツをスクラップする方法の詳細については、questionをご覧ください。

+0

ありがとうございます! :) – planetes853

+0

次に動的レンダリングを持つWebサイトをナビゲートするための他のライブラリはありますか? – planetes853

+0

私の答えにリンクを見てください。 – jcollado