0

我想获得嵌套在这样的标签中的文本“一些文本”:

<tr>
   <td>CME Globex</td>
   <td colspan="4">
   Some text
   <a target="_blank"" href="http://...>View Rollover Dates</a>
   </td>
</tr>

我可以做类似.findAll('tr')first, some_tr.findAll('td', colspan=4)second 和 then的事情some_td.find(text=True)。但是有没有更有效的方法来做到这一点?有没有办法继续遍历标签并最终找到文本?

4

1 回答 1

1

您可以使用以下XPath表达式lxml

html = """<tr>
   <td>CME Globex</td>
   <td colspan="4">
   Some text
   <a target="_blank"" href="http://...">View Rollover Dates</a>
   </td>
</tr>"""

import lxml.html

tree = lxml.html.fromstring(html)
print tree.xpath('//tr/td[@colspan="4"]/text()')

不是你所追求的……

另一种方法可能是找到链接到“查看翻转日期”的锚点并获取前面的元素......

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
for a in soup.find_all('a', text='View Rollover Dates'):
    print a.previous_element
于 2013-07-22T00:19:01.527 回答