Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 选择前面的所有文本(<;br>;_Html_Xpath - Fatal编程技术网

Html 选择前面的所有文本(<;br>;

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

我有以下可怕的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. 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')]