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

时间:2014-10-23 19:37:02

标签: python xpath

鉴于以下内容:

<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 ...

1 个答案:

答案 0 :(得分:0)

我会用:

normalize-space(string(/table))