bev*_*qua 5 html c# xpath html-agility-pack
如何获得长度为200个或更多字符的内部文本(纯文本,丢弃其他子项)的第一个元素?
我正在尝试创建一个像Embed.ly这样的HTML解析器,我已经建立了一个我首先检查的后备系统og:description,然后我会搜索这个事件,然后才会搜索description元标记.
这是因为大多数网站甚至包括meta description在该标签中描述其网站,而不是当前页面的内容.
例:
<html>
<body>
<div>some characters
<p>200 characters <span>some more stuff</span></p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我可以使用什么选择器来获取该HTML片段的200个字符部分?我不想要更多的东西,我不关心它是什么元素(除了<script>或<style>),只要它是第一个包含至少200个字符的纯文本.
XPath查询应该是什么样的?
用途:
(//*[not(self::script or self::style)]/text()[string-length() > 200])[1]
Run Code Online (Sandbox Code Playgroud)
注意:如果文档是XHTML文档(这意味着所有元素都在xhrml命名空间中),则上面的表达式应指定为:
(//*[not(self::x:script or self::x:style)]/text()[string-length() > 200])[1]
Run Code Online (Sandbox Code Playgroud)
其中前缀"x:"必须绑定到XHTML名称空间 - "http://www.w3.org/1999/xhtml"(或许多XPath API调用此方法 - 名称空间必须使用此前缀"已注册 ")