Html 选择前面的所有文本(<;br>;
我有以下可怕的HTML:Html 选择前面的所有文本(<;br>;,html,xpath,Html,Xpath,我有以下可怕的HTML: <p> <a href="102036.pdf">102036</a> - <em>In re</em> State v. Williams <a href="#">video</a><br> <a href="104236.pdf">104236</a> - University of Kansas Hosp. Auth. v. Bo
<p>
<a href="102036.pdf">102036</a> - <em>In re</em> State v. Williams <a href="#">video</a><br>
<a href="104236.pdf">104236</a> - University of Kansas Hosp. Auth. v. Board of Wabaunsee County Comm'rs <a href="#">video</a>
</p>
或者,我可以捕获所有文本,这也很好:
Item 1: "102036 - In re State v. Williams
Item 2: "104236 - University of Kansas Hosp. Auth. v. Board of Wabunsee County
我已经尝试了一段时间了,但是没有取得任何进展。我想要像这样的东西:
/a/following::text()[before::br]
帮助?如果您安装了firebug并且正在运行Firefox,那么对于这一点以及所有未来的xpath需求,您只需遵循本教程即可: 查找页面上任何内容的xpath非常简单。给你,朋友:
//a//following-sibling::text() | //a//following-sibling::*[not(self::a)]/text()
到目前为止,我发现最好的方法就是简单地用核弹攻击错误的
节点
因此:
然后,使用更干净的html,可以使用简单的XPath:
texts = [e.tail for e in elem.xpath('//a')]
归功于:trought with jquery?@MaurizioBattaghini,这不是浏览器端,我需要使用xpath和lxml。唉,Jquery不是我工具包中的工具。我的错,对不起,我帮不了你,这很接近,但有三个结果。请参阅我的答案,了解我正在使用的修复方法。但这可能不够灵活,需要将许多XPath表达式链接在一起。
elem = html.xpath('//p')[0]
etree.strip_tags(elem, 'em')
texts = [e.tail for e in elem.xpath('//a')]