web-dev-qa-db-ja.com

Javascriptをサポートしてスクリーンスクレイピングするための優れたツールは何ですか?

Webサイトのナビゲーションを自動化して(Javascriptをサポートして)、ページからHTMLを収集できる優れたテストスイートまたはツールセットはありますか?

もちろん、BeautifulSoupを使用してストレートHTMLをスクレイプすることもできます。しかし、これはJavascriptを必要とするサイトには役に立ちません。 :)

29
Matt Howell

Selenium または Watir を使用して、実際のブラウザーを駆動できます。

また、JavaScriptベースのヘッドレスブラウザもいくつかあります。

  • PhantomJS はヘッドレスWebkitブラウザです。
    • pjscrape は、PhantomJSとjQueryに基づくスクレイピングフレームワークです。
    • CasperJS は、スクレイピングするURLをポイントするよりも少し多くのことを行う必要がある場合に、PhantomJSで使用されるナビゲーションスクリプトおよびテストユーティリティです。
  • ゾンビ for Node.js

個人的には、Seleniumに最も精通しています。これは、多数の言語で自動化スクリプトを作成するためのサポートがあり、Firefox用の優れた Selenium IDE 拡張機能などのより成熟したツールを備えています。テストケースを作成して実行し、テストスクリプトを多くの言語にエクスポートできます。

26
Jonny Buchanan

HtmlUnit を使用することも可能です。

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

かなり優れたJavaScriptサポート(常に改善されています)を備えており、非常に複雑なAJAXライブラリーでも機能し、使用する構成に応じてFirefoxまたはInternetExplorerをシミュレートします。

これは通常、テスト目的またはWebサイトから情報を取得するために使用されます。

6
Kevin Hakanson

Seleniumはhtmlunitをラップするようになったため、ブラウザを起動する必要はありません。新しいWebDriverAPIも非常に使いやすいです。 最初の例ではhtmlunitドライバーを使用しています

4
user177887

Mozenda も使用するのに最適なツールです。

2

そこにある任意のサイトで機能するソリューションをコーディングすることは非常に困難です。各ナビゲーションメニューの実装は非常に一意です。私はスクレーパーと多くの仕事をしてきました、そしてあなたがあなたがターゲットにしたいサイトを知っているならば、これが私がそれにアプローチする方法です。

通常、ナビゲーションメニューで使用される特定のJavaScriptを分析する場合、正規表現を使用して、ナビゲーションメニューの作成に使用される変数のセット全体を引き出すのはかなり簡単です。私はBeautifulSoupを使用したことがありませんが、あなたの説明から、HTML要素でのみ機能し、スクリプトタグ内では機能しない可能性があるようです。

それでも問題が解決しない場合、またはフォームのPOSTやajaxをエミュレートする必要がある場合は、Firefoxを入手して LiveHttpHeaders プラグインをインストールしてください。このプラグインを使用すると、サイトを手動で参照し、手動で参照しているときに渡されるCookieとともにナビゲートされているURLをキャプチャできます。これは、ターゲットWebサーバーから有効な応答を取得するためのリクエストを送信するためにスクレーパーボットに必要なものです。これにより、行われているajax呼び出しもキャプチャされます。多くの場合、目的の応答を取得するには、同じajax呼び出しをスクレーパーに実装する必要があります。

2
tyshock

Scrape.it からオープンソースのスクリーンスクレイパーを試すことができます

更新:2013年4月4日の時点で、Scrape.it Screen Scraperは github のオープンソースです。

2
KJW

そして、javascriptの空想は、ページのブラウザの内部DOMモデルを台無しにしており、生のHTMLには何もしないことに注意してください。

1
William Keller

私はこれにSeleniumを使用してきましたが、うまく機能することがわかりました。 Seleniumはブラウザで実行され、Firefox、Webkit、およびIEで動作します。 http://Selenium.openqa.org/

1
Daniel Honig

@insinWatirはIEのみではありません。

https://stackoverflow.com/questions/81566#83387

1
Željko Filipin