HTML 敏捷 - 在下面的代码中只找到一条记录
HTML Agility - Only one record is being found in the code below
我正在尝试获取具有特定 class 的所有 div 标签。
下面的代码运行正常,但只有一条记录返回。
我做错了什么?
using (WebClient client = new WebClient())
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
string html = client.DownloadString("https://myurl.com");
doc.LoadHtml(html);
var findDivs = doc.DocumentNode.Descendants().Where(d =>
d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("list-mode-table-wrapper")
).Select(x => x).ToList();
}
我建议使用 SelectNodes 获取所有具有特定 class 名称的 div 标签。
var findDivs = doc.DocumentNode.SelectNodes("//div[@class='list-mode-table-wrapper']")?.ToList();
SelectNodes 使用 XPath 在您使用 // 时搜索整个文档。这将在整个页面中搜索具有该 class 名称的 div。对于 div 下带有 class 的任何内容,您可以使用 / 在其下指定您需要的元素 (("//div[@class='xyz']/table/tbody/etc")
)。
由于 SelectNodes return 如果未找到任何内容,则为 null,您可以使用错误检查来确保 findDivs 在继续使用它时不为 null。
我正在尝试获取具有特定 class 的所有 div 标签。
下面的代码运行正常,但只有一条记录返回。
我做错了什么?
using (WebClient client = new WebClient())
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
string html = client.DownloadString("https://myurl.com");
doc.LoadHtml(html);
var findDivs = doc.DocumentNode.Descendants().Where(d =>
d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("list-mode-table-wrapper")
).Select(x => x).ToList();
}
我建议使用 SelectNodes 获取所有具有特定 class 名称的 div 标签。
var findDivs = doc.DocumentNode.SelectNodes("//div[@class='list-mode-table-wrapper']")?.ToList();
SelectNodes 使用 XPath 在您使用 // 时搜索整个文档。这将在整个页面中搜索具有该 class 名称的 div。对于 div 下带有 class 的任何内容,您可以使用 / 在其下指定您需要的元素 (("//div[@class='xyz']/table/tbody/etc")
)。
由于 SelectNodes return 如果未找到任何内容,则为 null,您可以使用错误检查来确保 findDivs 在继续使用它时不为 null。