2009-07-08 13 views
1

私はウェブサイトからのデータ抽出を自動化しようとしています。当社のサプライヤの1社は、オンラインアプリケーション「Business Objects 11」を通じて、いくつかの機器ロギングデータへのアクセスを提供しています。このオンラインアプリに慣れていない場合は、ウェブベースのレポート作成ツールと考えることができます。問題は、私は多くの機器を監視しようとしており、このサプライヤは一度に1つのログを抽出する要求を作成しただけだということです。この要求には機器番号、開始日、終了日がかかります。問題を悪化させるために、「csv」エクスポートが壊れており、修正を拒否しているため、バイナリ形式のExcel形式にしかエクスポートできません。 Excelの65 536行制限によって制限されています(私のケースでは3〜4日間のデータ記録になります)。私はサプライヤだけが必要な管理者権限を持っているので、新しいリクエスタを作成することはできません。ブラウザのナビゲーションとデータの抽出を自動化

Web GUIを使用してたくさんのリクエスト(約800件)を実行する最もエレガントな方法は何でしょうか?私は、マウスの位置、クリックイベント、およびキーストロークに遅延やすべてをハードコードできると思います...しかし、より良い方法が必要です。

私はAutoHotKeyとAutoItスクリプトについて読みましたが、Web上でできることは限られているようです。また...私はIE6で立ち往生しています...しかし、あなたが別のブラウザを含む方法を知っているなら、あなたの答えにはまだ非常に興味があります。

(私はローカルのログファイルを持っていたら、データを抽出することはない問題です)

答えて

1

試してみることがいくつかあります。サイトがhtmlで、簡単なPOSTまたはGETでレポートをリクエストできる場合は、urlib/urlib2およびcookielib PythonモジュールでExcel文書を取得するだけで十分です。

これを試すことができます:xlrdエクセルからデータを抽出します。

また、http://pamie.sourceforge.net /をご覧ください。私はそれを自分で試したことはありませんが、有望で使いやすいように見えます。

+0

ありがとう、Pamieは素晴らしい作品です! 私が今持っている唯一の問題は、それがアプリのカスタムウィジェットのいくつかで動作するようになっている:(。(ヘッダフレームのカスタムテキストボックスのいくつかの種類...) 今、特定のトリッキーな部分のためのAutoItを使用するためには、実行可能な解決策のように思えます 誰かがこの制限を回避する方法を知っているかもしれません。 –

0

通常、私はすべてのIE(または任意のブラウザ)を使用しないようお勧めします。覚えておいてください。ウェブブラウザソフトウェアは、HTTPリクエストを作成し、意味のある方法で結果を表示するプロキシプログラムです。同様のHTTP要求を行い、応答を処理する他の方法もあります。ほぼすべての現代の言語には、APIのどこかに組み込まれています。これはスクリーンスクレーピングまたはウェブスクレーピングと呼ばれます。

しかし、この提案を完成させるには、プログラミング環境についてもっと知る必要があります。つまり、このスクリプトを書くプログラミング言語は何ですか?次のようになりますが、単なる文字列としてHTMLの結果を取得するC#を使用して

典型的な例:あなたは、あなたが必要とするすべてのフィールドを検索し、別の要求を送信するために文字列を解析

new System.Net.WebClient().DownloadString("http://example.com"); 

。 WebClientクラスには、.DownloadFile()メソッドもあり、Excelファイルを取得するのに便利です。

+0

言語自体は問題ではありません。私はC/C++開発者に対しより多くのだが、私は少しPHPで働いていたなどのVB/VBS、C#、Java(登録商標)、バッシュスクリプト、と多くのことをしてきましたが、それは「Web言語」になると、それはそれについてです。 あなたはHTTP要求について正しいですが、私は、このようなWebアプリケーションからの生の応答を解析する印象が非常に複雑になりますが...それとも... –

+0

@Decapsuleurない:正規表現でHTML解析応答が安っぽい見えるが、意外に動作します自動的に生成されたページ用です –

+0

私は正規表現を使用しません - それは本当に醜い一致ネストされたタグなどを取得します。手動文字列関数の実装と保守が簡単になります。 –

0

.NETを使用できるので、WindowsフォームWebブラウザーコントロールの使用を検討する必要があります。サイトをナビゲートしてボタンを押すなどの操作を自動化することができます。レポートページがロードされたら、コードを使用してHTML DOMをナビゲートして、必要なデータを検索することができます。

私はeBayからオークションデータを抽出するために、この数年前のようなことをしました。

関連する問題