0

我使用 Winrt,我尝试解析 HTML 页面以获取结果。

但要获得结果,我必须填写一个搜索页面并点击提交按钮。

是否可以通过 Win RT 中的代码来做到这一点?

4

2 回答 2

1

如果您使用 WinJS 查询找到您的按钮,您可以像这样以编程方式触发 click 事件:

element.fireEvent("onclick");
于 2013-08-31T12:47:17.027 回答
0

我猜你还没有下载页面(或显示在 WebView 中)。要发出请求,请仔细查看HttpClientHttpClientHandler。根据页面是使用 GET 还是 POST,您需要另外创建一个HttpRequestMessage。搜索表单的 url(通常是表单的 action 属性)以了解您的请求 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 回答