1

これが可能かどうかはわかりませんが、Javascript を使用してデータをレンダリングする Web ページからデータを取得したいと考えています。これは、Linux シェルからのものです。

私が今できること:

  1. curl/lynx/wget を使用してログインし、コマンド ラインからヘッダーを取得する http 投稿

  2. コマンドラインでヘッダーを使用して、Webページの「安全な」場所にアクセスします

ただし、ページに表示される要素は静的 html のみです。私が必要とする情報のほとんどは、js を使用して動的にレンダリングされ (最終的には html としても表示されます)、コマンド ライン ブラウザーには表示されません。問題はjsインタープリターの欠如にあることを理解しています。

そのため...私が考えたいくつかの回避策は次のとおりです。

  1. コマンドラインから完全なブラウザーを呼び出し、何らかの方法で情報を stdout に戻します。これは、POST できる必要があることを意味します。

  2. ヘッダーを (セッション情報などを使用して) 渡し、curl からこれらの完全なブラウザーの 1 つに取得し、出力 html を再び stdout にダンプします。他のすべてが失敗した場合、ウィンドウのプリントスクリーン機能である可能性があります。

  3. 純粋な Java ソリューションでも問題ありません。

似たようなことをして成功した経験のある人はいますか?

ありがとう!

4

3 に答える 3

2

WebDriverを使用して実行できますが、Web ブラウザーがインストールされている必要があります。SeleniumHtmlUnitなどの他のソリューションもあります(ブラウザーはありませんが、動作が異なる場合があります)。

ここで Selenium プロジェクトの例を見つけることができます。

WebDriver

WebDriver は、Web サイトの自動テストを作成するためのツールです。実際のユーザーの動作を模倣することを目的としており、アプリケーションの HTML と対話します。

セレン

Selenium はブラウザを自動化します。それでおしまい。その力で何をするかは完全にあなた次第です。主に、テスト目的で Web アプリケーションを自動化するためのものですが、それだけに限定されるものではありません。退屈な Web ベースの管理タスクも自動化できます (自動化する必要があります!)。

HtmlUnit

HtmlUnit は「Java プログラム用の GUI レス ブラウザ」です。HTML ドキュメントをモデル化し、「通常の」ブラウザで行うのと同じように、ページの呼び出し、フォームへの入力、リンクのクリックなどを可能にする API を提供します。

のようにWebDriverスタンドアローンサーバーを必要としないので利用をお勧めしますが、ヘッドレス環境でXvfbを気にせずにブラウザをインストールしたくない場合に適しているかもしれません。SeleniumHtmlUnit

于 2012-05-24T12:44:56.807 に答える
1

Seleniumでできることを知りたいと思うかもしれません。ブラウザと対話してコンテンツを処理するために使用できる多数の言語ドライバー (Java を含む) があり、通常はテストと検証の目的で使用されます。どうすれば探しているものを正確に取得できるかはわかりませんが、その存在と可能性を認識してもらいたい.

于 2012-05-24T12:55:59.247 に答える
0

これは、WebSocket をセットアップしない限り不可能であり、このようにしても、本当に依存していると思います。あなたの目的を詳しく教えてください。私の個人的な好奇心のために:-)

于 2012-05-24T12:37:14.977 に答える