我使用 Winrt,我尝试解析 HTML 页面以获取结果。
但要获得结果,我必须填写一个搜索页面并点击提交按钮。
是否可以通过 Win RT 中的代码来做到这一点?
我使用 Winrt,我尝试解析 HTML 页面以获取结果。
但要获得结果,我必须填写一个搜索页面并点击提交按钮。
是否可以通过 Win RT 中的代码来做到这一点?
如果您使用 WinJS 查询找到您的按钮,您可以像这样以编程方式触发 click 事件:
element.fireEvent("onclick");
我猜你还没有下载页面(或显示在 WebView 中)。要发出请求,请仔细查看HttpClient和HttpClientHandler。根据页面是使用 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 。