1

我正在使用 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

任何解决此问题的帮助将不胜感激!谢谢大家。

4

0 回答 0