鉴于以下内容:
<table>
<tr>
<td>
<div>Text 1</div>
</td>
<td>
Text 2
</td>
<td>
<div>
<a href="#">Text 3</a>
</div>
</td>
</tr>
<tr>
...
</tr>
</table>
鉴于上表,我将如何提取所有文本?请注意,嵌套元素的数量是任意的,所以我不能只查找第一个兄弟,第三个兄弟和第二个兄弟。
我正在寻找提取文本的一般方法。
In [1]: d="""<table>
...: <tr>
...: <td>
...: <div>Text 1</div>
...: </td>
...: <td>
...: Text 2
...: </td>
...: <td>
...: <div>
...: <a href="#">Text 3</a>
...: </div>
...: </td>
...: </tr>
...: <tr>
...: ...
...: </tr>
...: </table>"""
In [3]: from lxml import etree
In [4]: f = etree.HTML(d)
In [5]: f.xpath('normalize-space(string(/table))')
Out[5]: ''
In [6]: f.xpath('normalize-space(string(//table))')
Out[6]: 'Text 1 Text 2 Text 3 ...
答案 0 :(得分:0)
我会用:
normalize-space(string(/table))