テキストの入力、クリックなどのブラウザーでのタスクを自動化するプログラムに取り組んでいますが、現在、Visual Studio 2010 で Web ブラウザー ツールを使用すると、すべて正常に動作しています。
私が知りたいのは、ブラウザの代わりに送信リクエストを使用できるように、これらすべてを変換する方法です。マルチスレッドを使用する場合は、はるかに効率的で優れていると聞きましたが、すでに機能しているコードが非常に多く、かなりの量をスクレイピングせずにこれを行う方法がわかりません。
テキストの入力、クリックなどのブラウザーでのタスクを自動化するプログラムに取り組んでいますが、現在、Visual Studio 2010 で Web ブラウザー ツールを使用すると、すべて正常に動作しています。
私が知りたいのは、ブラウザの代わりに送信リクエストを使用できるように、これらすべてを変換する方法です。マルチスレッドを使用する場合は、はるかに効率的で優れていると聞きましたが、すでに機能しているコードが非常に多く、かなりの量をスクレイピングせずにこれを行う方法がわかりません。
HttpWebRequest / HttpWebResponse を使用してサーバーへの HTTP 要求を作成し、HttpWebResponse.GetResponseStream() を使用してドキュメント本体を取得します。次に、HTML フレームワーク ( HtmlAgilityPackなど) を使用して HTML を解析し、ドキュメントの DOM グラフを取得します。次に、DOM を走査してデータを抽出し、結果としてサーバーに返される要求の要求本文を作成します。
応答ドキュメントが有効な XML (XHTML1.1 など) の場合は、それを System.Xml.XmlDocument にロードすることで時間を節約できますが、実際には HTML ドキュメントにはエラーが含まれることが多く、HtmlAgilityPack などのフレームワークは System.Xml. XML。
マルチスレッドに関しては、複数の HttpWebRequests をそれぞれ同時に起動できます (各リクエストは独自のスレッドに関連付けられるか、Async メソッドを使用します)。.NET ネットワーク ライブラリに存在する「ホストごとに 2 つの同時 HTTP 要求」ポリシーをオーバーライドするには、いくつかの設定をいじる必要があることに注意してください。