c# - 在 C# 中获取基于样式的 HTML 元素

标签 c# jquery css html-agility-pack

我在字符串中有 HTML,需要使用 C# 根据其 CSS 样式提取特定节点。过去,我使用 HtmlAgilityPack 解析 HTML。这很好地解析了 HTML,并以有组织的方式为我提供了所有元素。我什至可以按属性过滤或查询。问题在于它不“理解”CSS 层次结构是如何工作的。 CSS 可以是内联的,可以在文件的开头,也可以在父节点中。浏览器足够智能,知道元素的最终渲染应该是什么。 HtmlAgilityPack 可以为我提供特定元素的属性,但我看不到它告诉我该元素的最终样式是什么的方法。例如,一个元素可能没有任何属性,但具有基于更复杂 CSS 逻辑的特定样式(来自父节点的样式等)

如何在不使用 headless 浏览器的情况下查询内存中的 HTML,以找到其最终呈现(如果它们在浏览器中呈现)具有特定样式的元素? (类似于 jQuery 的做法,例如:$('[color="#0000ff"]')

我不想要很多复杂的正则表达式或类似的。

谢谢,

最佳答案

CSS(级联样式表)用于蝴蝶布局 Web 应用程序,它是一个客户端站点。一个网页多个 CSS 示例 External、Internal、Inline 根据用户需要使用。每个 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# - 在 C# 中获取基于样式的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56319422/

相关文章:

css - 使用css在不同列中具有相同的宽度

css - Bourbon 中的 "Compact"函数未调用 SASS

css calc 表达式未通过 w3cvalidator 验证并且在现实生活中也不起作用

javascript - Jquery远程补全,li的不可选

c# - 列表的 ViewModel 验证

c# - 使用 IPageRouteModelConvention 时获取版本

c# - Bot Builder SDK 3.5.5 中的 ConnectorStore 更改?

c# - Telerik RadWindows/如何使用 DocMenu 打开 Telerik RadWindows

javascript - jQuery 在等待 ajax 完成时显示服务器实时响应文本

javascript - 如何通过单击此选择器上的 anchor 按钮来隐藏 div