在 C# 中根据样式获取 HTML 元素
Posted
技术标签:
【中文标题】在 C# 中根据样式获取 HTML 元素【英文标题】:Get HTML Element Based on Style in C# 【发布时间】:2019-10-12 15:17:40 【问题描述】:我在字符串中有 html,需要使用 C# 根据其 CSS 样式提取特定节点。过去,我使用 HtmlAgilityPack 解析 HTML。这很好地解析了 HTML,并以有组织的方式为我提供了所有元素。我什至可以按属性过滤或查询。问题是它不“理解” CSS 层次结构是如何工作的。 CSS 可以是内联的,位于文件的开头,也可以位于父节点中。浏览器足够智能,可以知道元素的最终呈现应该是什么。 HtmlAgilityPack 可以为我提供特定元素的属性,但我看不到它可以告诉我元素的最终样式是什么。例如,一个元素可能没有任何属性,但具有基于更复杂的 CSS 逻辑的特定样式(来自父节点的样式等)
如何在不使用无头浏览器的情况下查询内存中的 HTML,以查找最终呈现(是否要在浏览器中呈现)具有特定样式的元素? (类似于 jQuery 的做法,例如:$('[color="#0000ff"]')
我不想要很多复杂的正则表达式或类似的。
谢谢,
【问题讨论】:
【参考方案1】:CSS(层叠样式表)用于蝴蝶布局 Web 应用程序,它是一个客户端站点。一个网页多个 CSS 示例外部、内部、内联根据用户需要使用。每个 CSS 都有相同的目标,但它保持秩序。更高的顺序是 Inline CSS 然后 Internal CSS 然后 external CSS 我们得到它的外部文件。每个 CSS 选择器都不是相同的示例 id、class、adjoin、parent、sibling 和其他选择器。阅读这篇文章https://css-tricks.com/precedence-css-order-css-matters/。
jQuery 选择器和 CSS 选择器是相同的,但 jquery 的工作方式不同,每个 jQuery CSS 包含在 Inline CSS 中。根据您的要求,$('[color="#0000ff"]')
是一个属性选择器。这个 html 示例是 <div color="#0000ff">content</div>
但它不是 seticesfy W3C。它也是 html 元素的自定义属性,推荐 W3C 使用自定义属性前缀 data-
示例 <div data-color="#0000ff">content</div>
你知道了 http://html5doctor.com/html5-custom-data-attributes/。
--谢谢--
【讨论】:
谢谢。但这如何回答这个问题?以上是关于在 C# 中根据样式获取 HTML 元素的主要内容,如果未能解决你的问题,请参考以下文章