私は会社のイントラネット サイトをスクレイピングしようとしているプロジェクトに取り組んでいます。現在、サーバー側でサポートを受けることができないという制約があるためです。axWebBrowser コントロールを使用してページに移動する C# クライアントを作成しています。ページが表示されると、SQL クエリから csv ファイルの動的ダウンロードを作成する .aspx ページを呼び出すボタン コントロールがあります。通常の状態では、これにより FileDownload ダイアログが開き、csv が保存されます。
私は、BeforeNavigate2 イベントを使用して e.uRL をキャプチャし、次に FileDownload イベントを使用してダイアログ ボックスをオーバーライドし、WebClient を使用してファイルを取得する人々の例を見つけました。e.uRL に .aspx スクリプトの URL が含まれており、動的に作成される .csv ファイルが含まれていないことを除いて、この方法は私にとってはうまく機能します。
私が読んだ別の提案は、ファイル パスの HTML 要求からヘッダーを解析することでしたが、それを行ったときに、ヘッダーで 401 Unauthorized Access 例外をスローしました。
最後に、可能であればこれを避けたいので、win32 api 呼び出しを使用し、FindWindow と SendMessage を使用してデフォルトのファイル ダイアログをナビゲートすることを考えましたが、順番に待機するマルチスレッド アプリケーションを作成したくありません。これをする。FileDownload ダイアログ ボックスが開いているときに発生するイベントが見つかりません。開く前または閉じた後に発生するイベントだけです。
あなたが持っているかもしれないアイデアは素晴らしいでしょう.私の説明を明確にするならば、私がこれまでに持っているもののここにコードを貼り付け始めることができます.