1

Webサイトからのファイルのダウンロードを自動化しようとしています。通常、ファイルをダウンロードするには、ユーザー名とパスワードを使用してログインします。特定の画面に移動して、ボタンをクリックします。

Chromeの開発者モードを使用してPOSTのシーケンスを監視し、.Net WebClientクラスを使用してすべての手順を複製しようとしましたが、成功しませんでした。WebClientクラスから派生し、Cookie処理を追加しました。これは機能しているようです。ログインページに移動し、WebClient.UploadValuesを使用して投稿します。約半分の時間で動作するようです。次のステップは、レポートURLに対して別のPOSTアクションを実行するように見えます。もう一度WebClient.UploadValuesを使用しますが、サーバーからの応答は内部エラーを示すページです。

いくつか質問があります。1)一連のWebブラウザーの相互作用を複製するために、C#コードを手動でコーディングするよりも優れたツールはありますか?私は本当に、毎日特定の時間にファイルをWindowsボックスにダウンロードできることだけを気にしています。2)WebClientは、これに使用するのに最適なクラスではないようです。おそらくそれは少し単純化することです。HttpWebRequestを使用してみましたが、POST要求をエンコードする機能がありません。他の推奨事項はありますか?3)Chromeの開発者プラグインはすべてのインタラクションを表示しているように見えますが、使用するのは少し面倒です。すべての生の通信(暗号化されていませんが、サイトはhttps経由でのみアクセスされます)を確認したいので、すべての手順を実際に複製しているかどうかを確認できます。

使用している正確なコードを投稿することもできます。私がデータを取得しているサイト、具体的にはスタンダードアンドプアーズのウェブサイトです。再公開ではなく、レポートに必要な履歴データをダウンロードするためのカスタムレポートを作成する機能があります。

4

2 に答える 2

1

IEを使用してファイルをダウンロードすることは、http要求を複製するためのC#/ Perl / Javaコードを作成する場合と比較して、はるかに簡単です。

理由は、JavaScriptコードを少し変更しただけでも、フローが中断する可能性があるためです。

IEでは、COMを使用して自動化できます。次のVBAの例では、ISを開き、Google検索を実行します。

Sub Search_Google()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")

IE.Navigate "http://www.google.com" 'load web page google.com

While IE.Busy
  DoEvents  'wait until IE is done loading page.
Wend

IE.Document.all("q").Value = "what you want to put in text box"
ie.Document.all("btnG").Click 
'clicks the button named "btng" which is google's "google search" button

While ie.Busy
  DoEvents  'wait until IE is done loading page.
Wend

End Sub
于 2011-03-22T03:41:34.853 に答える
0

3) Although Chrome's developer plugin appears to show all interaction, I find it a bit cumbersome to use. I'd be interested in seeing all of the raw communication (unencrypted though, the site is only accesses via https), so I can see if I'm really replicating all of the steps.

このために、 Fiddlerを使用して、進行中のすべてのインタラクションと前後に移動するRAWデータを表示できます。HTTPSで機能させるには、証明書をインストールしてトラフィックの復号化を有効に する必要があります。

于 2011-03-22T03:11:58.470 に答える