我正在使用HTML Agility Pack来抓取我的Windows应用商店应用的网站。 Windows 8商店应用程序的版本不支持XPath,也没有selectNodes函数,但它支持lambda表达式来查找所需的值。
在广泛搜索网页后,我看到的唯一解决方案(一遍又一遍)是使用DocumentNode.Descendants()来获取要在其中搜索的元素列表。但是,对我来说,DocumentNode.Descendants()始终返回空值。无论是否将参数传递给函数,都会发生这种情况。
我现在回复了一个回复。我可以看到HtmlDocument对象里面的页面的html。
代码段:
HttpContent loginContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("name", username),
new KeyValuePair<string, string>("password", password)
}
HttpResponseMessage response = await httpClient.GetAsync(httpClient.BaseAddress); //Gets the cookie
response = await httpClient.PostAsync(loginPageAddress, loginContent); //Logs in
HtmlDocument doc = new HtmlDocument();
doc.Load(new StringReader(await response.Content.ReadAsStringAsync())); // Loads doc, can see html for the page in doc.text attribute now
HtmlNode pointsNode = doc.DocumentNode.Descendants("div").Where(o => o.Attributes["class"].Value == "availableNumber").FirstOrDefault(); // fails because Descendants returns null values
从我的即时窗口调试:
doc.DocumentNode.Descendants("div")
{HtmlAgilityPack.HtmlNode.Descendants}
name: null
System.Collections.Generic.IEnumerator<HtmlAgilityPack.HtmlNode>.Current: null
System.Collections.IEnumerator.Current: null
任何帮助解决此问题的人都将不胜感激!谢谢大家。