我有以下糟糕的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>
我想使用XPath捕获每个</a>
之后的所有文本,所以:
Item 1: " - In re State v. Williams
Item 2: " - University of Kansas Hosp. Auth. v. Board of Wabunsee County
或者,我可以捕获所有文本,那也没关系:
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]
帮助?
答案 0 :(得分:1)
你去吧,朋友:
//a//following-sibling::text() | //a//following-sibling::*[not(self::a)]/text()
答案 1 :(得分:0)
到目前为止,我发现的最好的事情就是简单地核错错误的<em>
节点。
所以:
elem = html.xpath('//p')[0]
etree.strip_tags(elem, 'em')
然后,使用更清洁的html,可以使用简单的XPath:
texts = [e.tail for e in elem.xpath('//a')]
答案 2 :(得分:-2)
如果你安装了firebug并且正在运行Firefox,那么为了满足这个以及所有未来的xpath需求,你可以按照本教程进行操作:
http://www.wikihow.com/Find-XPath-Using-Firebug
非常简单的方法来查找页面上任何内容的xpath。