2013-07-22 58 views
0

我想获得文本“一些文本”标签嵌套内是这样的:Beautifulsoup Python的嵌套文本

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

我可以做类似.findAll('tr')第一,some_tr.findAll('td', colspan=4)秒然后some_td.find(text=True)。但是,有没有更有效的方法来做到这一点?有没有办法通过标签遍历并最终找到文本?

+0

您只想获取“部分文本”部分或全部文本,包括“CME Globex”和“查看翻转日期”? – jsalonen

+0

只是“一些文本” –

回答

1

可以使用lxml使用XPath表达式:

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 
+0

但如果“查看翻转日期”不存在其他一些HTML代码。我正在寻找类似遍历'tr'标签到'td'的东西。 –

+0

@MaxKim所以,你只是寻找一个更短的方式来写你描述的逻辑...不是“另一种方式”获取文本... –

+0

更有效的方式来查找文本 –