如何在 C# 中获取 H1 标签之间的 HTML 文本
我需要解析 HTML 文档以提取所有 H1 标签以及它们之间的所有 HTML。我一直在使用 HtmlAgilityPack 来实现这一目标,并取得了一些成功。我可以使用以下方法提取所有 H1 标签:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h1"))
但是如何在每个 H1 标签之后提取所有 HTML,直到我点击下一个标签H1标签?此 HTML 可以包含表格/图像/链接中的任何内容或 HTML 页面上除 H1 标记之外的任何其他内容。
提前致谢。
I need to parse an HTML document to extract all the H1 tags and all HTML between them. I have been playing with HtmlAgilityPack to achieve this with some success. I could extract all H1 tags using:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h1"))
But how do I extract all the HTML after every H1 tag until I hit the next H1 tag? This HTML could include anything from a table/image/link or any other thing on an HTML page but H1 tag.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能的解决方案:
获取完整的 HTML 作为字符串,替换 < H1>带有 HTML 不知道的符号(例如 ü,HTML 使用 & uuml;),然后通过该符号将 String 拆分为数组。
现在,您搜索(例如使用 RegEx)具有开始和结束标记的节点并仅解析这些节点。
又快又脏,但应该可以用。
请注意,正如 drachenstern 提到的,嵌套的 H1 标签将导致父节点不被解析。
Possible solution:
Get the complete HTML as String, replace < H1 > with a sign HTML does not know (e.g. ü, HTML uses & uuml;), then split the String by this sign into an array.
Now you search (with RegEx for example) for nodes that have start AND end tags and only parse those.
Quick and dirty, but should work.
Please be aware, that, as drachenstern mentioned, nested H1-Tags will lead to parent-nodes not being parsed.