1

Windows 上で動作する限り、このソリューションがどの言語で書かれているかは気にしないと言って、これを前置きさせてください。

私の問題は次のとおりです。頻繁に更新されるデータを含むサイトがあり、後でレポートするために定期的に取得したいと考えています。このサイトでは JavaScript が正しく機能する必要があるため、wget を使用するだけでは機能しません。ブラウザーをプログラムに埋め込むか、スタンドアロンのブラウザーを使用して、このデータの画面を定期的にスクレイピングするための良い方法は何ですか?

理想的には、ページ上の特定のテーブルを取得したいのですが、必要に応じて正規表現に頼ることができます。

4

10 に答える 10

9

おそらく、Watir、Watin、Selenium などの Web アプリ テスト ツールを使用して、ページから値を取得するブラウザーを自動化できます。以前にデータをスクレイピングするためにこれを行ったことがありますが、非常にうまく機能します。

于 2008-11-05T16:02:38.593 に答える
3

CreateObject("InternetExplorer.Application")JavaScript が必須の場合は、ActiveX ( ) を介して Internet Explorer をインスタンス化し、そのNavigate2()メソッドを使用して Web ページを開くことができます。

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate2 "http://stackoverflow.com"

ページの読み込みが完了すると ( をチェックdocument.ReadyState)、DOM に完全にアクセスできるようになり、任意のメソッドを使用して好きなコンテンツを抽出できます。

于 2008-11-05T16:05:05.063 に答える
2

あなたはBeautifulSoupを見ることができます-オープンソースのPythonなので、簡単にプログラムできます。サイトの引用:

Beautiful Soupは、スクリーンスクレイピングなどの迅速なターンアラウンドプロジェクト向けに設計されたPython HTML/XMLパーサーです。3つの機能がそれを強力にします:

  1. マークアップを悪くしても、美しいスープが詰まることはありません。これにより、元のドキュメントとほぼ同じ意味の解析ツリーが生成されます。これは通常、必要なデータを収集して逃げるのに十分です。
  2. Beautiful Soupは、解析ツリーをナビゲート、検索、および変更するためのいくつかの簡単なメソッドとPythonのイディオムを提供します。これは、ドキュメントを分析し、必要なものを抽出するためのツールキットです。アプリケーションごとにカスタムパーサーを作成する必要はありません。
  3. Beautiful Soupは、受信ドキュメントをUnicodeに、送信ドキュメントをUTF-8に自動的に変換します。ドキュメントでエンコーディングが指定されておらず、Beautiful Soupがエンコーディングを自動検出できない場合を除いて、エンコーディングについて考える必要はありません。次に、元のエンコーディングを指定する必要があります。
于 2008-11-05T16:10:35.303 に答える
1

Java(または、JRuby、JythonなどのJVMで実行される他の言語)に精通している場合は、HTMLUnitを使用できます。HTMLUnitは完全なブラウザをシミュレートします。httpリクエスト、各ページのDOMの作成、およびJavascriptの実行(MozillaのRhinoを使用)。

さらに、シミュレートされたブラウザーにロードされたドキュメントに対してXPathクエリを実行したり、イベントをシミュレートしたりすることができます。

http://htmlunit.sourceforge.net

于 2008-11-05T18:07:14.817 に答える
1

私はYahoo Pipesをお勧めします。まさにそれが彼らの目的です。次に、yahoo パイプ データを RSS フィードとして取得し、必要に応じて処理できます。

于 2008-11-05T16:19:57.310 に答える
0

Badboyを試してみてください。それはあなたのウェブサイトのシステムテストを自動化することを意図していますが、あなたはそれがあなたが望むことをするのに十分便利な正規表現規則であると思うかもしれません。

于 2008-11-05T16:07:31.503 に答える
0

モジュールJavaScriptでPerl モジュールLWPを使用できます。これはセットアップが最速ではないかもしれませんが、確実に機能するはずです。とはいえ、これが Perl への最初の進出になることは絶対にありません。

于 2008-11-05T18:13:14.743 に答える
0

I recently did some research on this topic. The best resource I found is this Wikipedia article, which gives links to many screen scraping engines.

I needed to have something that I can use as a server and run it in batch, and from my initial investigation, I think Web Harvest is quite good as an open source solution, and I have also been impressed by Screen Scraper, which seems to be very feature rich and you can use it with different languages.

There is also a new project called Scrapy, haven't checked it out yet, but it's a python framework.

于 2009-01-02T21:22:28.857 に答える
0

Whaledawg の提案に賛辞として、私は RSS スクレーパー アプリケーションを使用する (Google 検索を行う) ことを提案するつもりでした。そうすれば、応答ストリームの代わりにプログラムで使用する素敵な生の XML を取得できます。自分で実装したい場合に、より多くのアイデアを提供するオープンソースの実装がいくつかあるかもしれません。

于 2008-11-05T16:44:46.560 に答える
0

Excel をお持ちの場合は、Web ページから Excel にデータをインポートできるはずです。

[データ] メニューから [外部データのインポート] を選択し、次に [新しい Web クエリ] を選択します。

データが Excel に取り込まれたら、Excel 内で操作するか、他の場所で使用できる形式 (CSV など) で出力できます。

于 2008-11-05T16:36:48.540 に答える