c# - 无法访问 HTML 文档中的特定元素(使用 HTML Agility)
问题描述
我正在开发一个需要从网站上抓取某些信息的 C# 项目,因此我使用 HTMLAgilityPack 来帮助我解决这个问题。我对这种事情很陌生,我遇到了无法从加载的 HTML 文档中检索某些元素的墙。
以前,我已经能够通过指定它们的内容来检索大量节点:
var importantLinks = htmlDoc.DocumentNode.Descendants("a")
.Where(node => node.GetAttributeValue("href", "").Contains("details"))
现在,对于特定系列的节点,即使使用非常特定的标识符,我也无法访问它们。
我想访问这些链接的内部文本,但似乎无法访问。我试图通过指定它们的类包含“图像”、“图像列表”等来搜索它们,但它们从未被找到。我也尝试过使用它的 id 搜索他们的父母,然后提取它的孩子,这也不起作用。
作为新手,我想知道我是否遗漏了一些明显的东西。
有什么见解吗?
解决方案
试试这个例子,它可以帮助我从C-Sharp Corner思考
HtmlDocument document2 = new HtmlDocument();
document2.Load(@"C:\Temp\sample.txt");
HtmlNode[] nodes = document2.DocumentNode.SelectNodes("//a").Where(x=>x.InnerHtml.Contains("div2")).ToArray();
foreach (HtmlNode item in nodes)
{
Console.WriteLine(item.InnerHtml);
}
使用 HTML 代码:
<html>
<head>
</head>
<body>
<div id="div1">
<a href="div1-a1">Link 1 inside div1</a>
<a href="div1-a2">Link 2 inside div1</a>
</div>
<a href="a3">Link 3 outside all divs</a>
<div id="div2">
<a href="div2-a1">Link 1 inside div2</a>
<a href="div2-a2">Link 2 inside div2</a>
</div>
</body>
</html>
推荐阅读
- javascript - SignalR 多客户端事件处理
- android - 当我增加图标大小时,侧边栏菜单图标被修剪
- c# - 如何在 MSChart 中为黑白打印制作虚线或虚线列
- javascript - 在带有标签的图表js中创建饼图
- c# - .net 正则表达式集成
- microsoft-graph-api - 返回的 deltaLinks 之间的不一致
- c# - 根据名称在层次结构中激活/停用游戏对象
- spring-boot - 将参数从 REST API 应用程序属性传递到已注册的 ApplicationEventListener
- angular - 如何使 canActivate 等待商店加载
- javascript - 如何将对象转换为字符串(Twig & Symfony)?