使用xpath从带有换行符的html中提取列表

时间:2017-06-20 19:47:53

标签: python html python-3.x xpath

如何使用xpath从中提取['First one', 'Second two', 'Third']

s = """
<table cellpadding="0" cellspacing="0" border="0"> 
<tbody><tr> 
<th class="searchResults" style="width:75px">First<br>one</th> 
<th class="searchResults" style="width:150px">Second<br>two</th> 
<th class="searchResults" style="width:95px">Third<br></th> 
</tr> 
</tbody></table>
"""
import lxml.html as LH
e = LH.fromstring(s)
e.xpath('/th[@class="searchResults"]/text()')

分裂<br>也是我不想要的。我已经尝试了string()normalize-space(),但无法做到这一点。

1 个答案:

答案 0 :(得分:2)

正如其他人所指出的,由于lxml仅支持XPath 1.0,因此在您的实际情况中没有纯XPath解决方案。但是使用XPath 2.0及更高版本,您可以使用string-join()函数,并且可以在路径步骤中调用函数(请参阅演示here):

//th[@class='searchResults']/string-join(text(), ' ')

XPath的工作方式与评论中@Rawing提到的代码段大致相同:

[' '.join(node.itertext()) for node in e.xpath('//th[@class="searchResults"]')]