2

私は主にajaxベースのWebアプリケーションをjspで提供してテストしています。すべてがアプリケーション側で動的に作成/割り当てられます。次のことを実行する必要があるある種のクローラー/スクレーパーを作成しようとしています。

  1. 特定のWebページで使用可能なすべてのボタン、ドロップダウンなどを「クリック」します
  2. リクエストごとに、クライアント/サーバーの相互作用を記録します
  3. 1つのWebページですべてのボタンが押されたら(ha?)、幅優先探索は#2の最初のレコードから始まります
  4. すべてのレコードが一度操作されるまで続けます。

Pythonは必需品ではありませんが、Pythonを使用してクリックするのは簡単です(Javaには、簡単に機能する可能性のあるものがいくつかあることはわかっています)。

def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

fiddlerなどの録音ソフトウェアを調べました:http ://www.fiddler2.com/fiddler2/

インタラクションを記録する方法はわかりませんが、画面を変更することはできません。たとえば、ページAで、ボタンBがページCに移動し、Bをクリックしたいのですが、Aのままにします(これは単純化されすぎたケースです)

幅優先探索については完全に理解していますが、スクリプト/プログラミング言語(#1から)を使用してWebページをロードする方法はわかりません。

それで、誰かが相互作用を記録する方法を知っていますか(おそらく簡単なBFSのためにそれをキューに入れておく)?そして、誰かがいくつかの記録ソフトウェアからリクエストをロードする方法を知っていますか?

ちなみに、これらすべてを実行するのにかかる時間は重要ではありません。数か月かかる場合でも、それでも問題ありません。

ありがとう。

4

2 に答える 2

1

autoit のようなツール (Python バインディングはあります...) を使用するか、SIKULI (http://sikuli.org/) と呼ばれるほうが好きなツール (Python バインディングはありませんが... 独自のスクリプト言語である) を使用します。いいね)

于 2012-09-05T16:54:04.797 に答える
0

Selenium には Python バインディング (http://seleniumhq.org/) があります。あなたはそれを使うことができます。

これがGUIベースである必要がある理由はありますか? GUIの外では、はるかに簡単な時間を過ごすことができます.

すべてのページで可能なリンクとそのリンク先のデータストアを保持する必要があります。GUI ベースのコントロールを使用すると、リンクを新しいブラウザー ウィンドウで開くことができると考えられますが、それは制御不能になる可能性があります。

于 2012-09-05T17:04:45.793 に答える