Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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
Python 使用xpath和换行符从html中提取列表_Python_Html_Python 3.x_Xpath - Fatal编程技术网

Python 使用xpath和换行符从html中提取列表

Python 使用xpath和换行符从html中提取列表,python,html,python-3.x,xpath,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"

如何使用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()')
s=”“”
第一个
一个 第二个
两个 第三个
""" 将lxml.html作为LH导入 e=左。从字符串(s) e、 xpath('/th[@class=“searchResults”]/text()


上也拆分,这是我不想要的。我尝试了
string()
normalize-space()
,但没有完全正确。

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

XPath的工作方式与注释中提到的代码段大致相同:

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

事先执行
s=s.replace(“
”,“)
是否有问题?它必须是一个仅限xpath的解决方案吗<代码>[''.join(node.itertext())用于e.xpath('//th[@class=“searchResults”]]]中的节点。请尝试
e.xpath('normalize-space()')。split()
[' '.join(node.itertext()) for node in e.xpath('//th[@class="searchResults"]')]