0

私は Winrt を使用して、結果の HTML ページを解析しようとしています。

しかし、結果を得るには、検索ページに入力して送信ボタンを押す必要があります。

Win RT のコードでそれを行うことは可能ですか?

4

2 に答える 2

0

まだページをダウンロードしていない (または WebView に表示していない) と思います。リクエストを作成するには、HttpClientHttpClientHandlerを詳しく見てください。ページが GET を使用するか POST を使用するかによって、HttpRequestMessageを追加で作成する必要があります。フォームの URL (ほとんどの場合、フォームのアクション属性) を検索して、リクエスト URI を確認します。

例:

var ClientHandler = new HttpClientHandler();
ClientHandler.UseCookies = true;
ClientHandler.AllowAutoRedirect = true;
ClientHandler.UseDefaultCredentials = true;
ClientHandler.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

var Client = new HttpClient(ClientHandler);
Client.DefaultRequestHeaders.Add("Accept", "text/html, application/xhtml+xml, */*");           
Client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");

var Response = await Client.GetAsync(RequestUri);

RequestUri はhttp://www.example.com/search?query=searchのようになります。ただし、必要なページで POST を使用してクエリを送信する場合は、次のように HttpRequestMessage を作成する必要があると思います。

var RequestMessage = new HttpRequestMessage();
RequestMessage.Content = new StringContent(YourPostData, Encoding.UTF8, "application/x-www-form-urlencoded");
RequestMessage.Method = HttpMethod.Post;
RequestMessage.RequestUri = new Uri(OtherRequestUri);
Response = await Client.SendAsync(RequestMessage);

応答の内容を解析するには、HtmlAgilityPackを使用するのが最適だと思います。

于 2013-09-01T16:37:32.947 に答える