如果标签存在,beautifulsoup从代码段获取最后一个标记

时间:2015-07-30 17:05:24

标签: python html parsing beautifulsoup html-parsing

这里的html代码段1:

<td class="firstleft lineupopt-name" style=""><a href="/link/link_url?id=222" title="Donald Trump" target="_blank">Trump, Donald</a>&nbsp;<span style="color:#666;font-size:10px;">B</span> &nbsp;<span style="color:#cc1100;font-size:10px;font-weight:bold;">TTT</span></td>

这里的html代码段2:

<td class="firstleft lineupopt-name" style=""><a href="/link/link_url2?id=221" title="Hillary Clinton" target="_blank">Clinton, Hillary</a> &nbsp;<span style="color:#cc1100;font-size:10px;font-weight:bold;">TTT</span></td>

这是我的相关代码:

all = cols[1].find_all('span')
for ele in all:
    if (ele is not None):
        ttt = cols[1].span.text
    else:
        ttt = 'none'

问题:我的代码在两个实例中都有效,但对于html代码段2,它会从第一个span标记中获取内容。在这两种情况下,如果标记存在,我只想从最后一个span标记中获取内容。如何才能做到这一点?

1 个答案:

答案 0 :(得分:0)

一种直截了当的方法是通过1e+30 + 10 = 1e+30索引获取最后一个元素:

-1

我还尝试使用modal来接近它,但ttt = all[-1].text if all else 'none' 不支持BeautifulSouplast-childlast-of-type,仅支持nth-last-of-type伪类。