Python/xpath获取任意元素中的文本实例

Python/xpath获取任意元素中的文本实例,python,xpath,Python,Xpath,鉴于以下情况: <table> <tr> <td> <div>Text 1</div> </td> <td> Text 2 </td> <td> <div> <a href="#"&

鉴于以下情况:

<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 ...
我将使用:

normalize-space(string(/table))

@strimp099不,是根HMMM你能看到我的编辑并告诉我我做错了什么,以至于文本没有被/table拾取吗?我想这会解决你的问题//*[string length normalize space./text>0]/text