Webサイトのナビゲーションを自動化して(Javascriptをサポートして)、ページからHTMLを収集できる優れたテストスイートまたはツールセットはありますか?
もちろん、BeautifulSoupを使用してストレートHTMLをスクレイプすることもできます。しかし、これはJavascriptを必要とするサイトには役に立ちません。 :)
HtmlUnit を使用することも可能です。
HtmlUnitは、「Javaプログラム用のGUIレスブラウザ」です。HTMLドキュメントをモデル化し、ページの呼び出し、フォームへの入力、リンクのクリックなどを可能にするAPIを提供します。 「通常の」ブラウザで行います。
かなり優れたJavaScriptサポート(常に改善されています)を備えており、非常に複雑なAJAXライブラリーでも機能し、使用する構成に応じてFirefoxまたはInternetExplorerをシミュレートします。
これは通常、テスト目的またはWebサイトから情報を取得するために使用されます。
Seleniumはhtmlunitをラップするようになったため、ブラウザを起動する必要はありません。新しいWebDriverAPIも非常に使いやすいです。 最初の例ではhtmlunitドライバーを使用しています
Mozenda も使用するのに最適なツールです。
そこにある任意のサイトで機能するソリューションをコーディングすることは非常に困難です。各ナビゲーションメニューの実装は非常に一意です。私はスクレーパーと多くの仕事をしてきました、そしてあなたがあなたがターゲットにしたいサイトを知っているならば、これが私がそれにアプローチする方法です。
通常、ナビゲーションメニューで使用される特定のJavaScriptを分析する場合、正規表現を使用して、ナビゲーションメニューの作成に使用される変数のセット全体を引き出すのはかなり簡単です。私はBeautifulSoupを使用したことがありませんが、あなたの説明から、HTML要素でのみ機能し、スクリプトタグ内では機能しない可能性があるようです。
それでも問題が解決しない場合、またはフォームのPOSTやajaxをエミュレートする必要がある場合は、Firefoxを入手して LiveHttpHeaders プラグインをインストールしてください。このプラグインを使用すると、サイトを手動で参照し、手動で参照しているときに渡されるCookieとともにナビゲートされているURLをキャプチャできます。これは、ターゲットWebサーバーから有効な応答を取得するためのリクエストを送信するためにスクレーパーボットに必要なものです。これにより、行われているajax呼び出しもキャプチャされます。多くの場合、目的の応答を取得するには、同じajax呼び出しをスクレーパーに実装する必要があります。
そして、javascriptの空想は、ページのブラウザの内部DOMモデルを台無しにしており、生のHTMLには何もしないことに注意してください。
私はこれにSeleniumを使用してきましたが、うまく機能することがわかりました。 Seleniumはブラウザで実行され、Firefox、Webkit、およびIEで動作します。 http://Selenium.openqa.org/
@insinWatirはIEのみではありません。