首页 > 解决方案 > 如何在 python 中使用 BeautifulSoup 获得第二个跨度?

问题描述

我正在尝试获取此 div 和其他类似内容中的第二个跨度值(如下所示)

<div class="C(#959595) Fz(11px) D(ib) Mb(6px)">
    <span>VALUE 1</span>
    <i aria-hidden="true" class="Mx(4px)">•&lt;/i>
    <span>TRYING TO GET THIS</span>
</div>

我试过查看类似的堆栈帖子,但我仍然不知道如何解决这个问题。这是我当前的代码:

time = soup.find_all('div', {'class': 'C(#959595) Fz(11px) D(ib) Mb(6px)'})
    for i in time:
        print(i.text) #this prints VALUE 1 x amount of times (there are multiple divs)

我已经尝试过 i.span、i.contents、i.children 等。我非常感谢任何帮助,谢谢!

标签: pythonweb-scrapingbeautifulsouphtml-parsing

解决方案


试试这个

from io import StringIO
from bs4 import BeautifulSoup as bs

data = """<div class="C(#959595) Fz(11px) D(ib) Mb(6px)">
    <span>VALUE 1</span>
    <i aria-hidden="true" class="Mx(4px)">•&lt;/i>
    <span>TRYING TO GET THIS</span>
</div>
<div class="another class">
    <span>VALUE 1</span>
    <i aria-hidden="true" class="Mx(4px)">•&lt;/i>
    <span>TRYING TO GET THIS</span>
</div>"""

soup = bs(StringIO(data))
spans = soup.select('div[class="C(#959595) Fz(11px) D(ib) Mb(6px)"] > span')
print(spans[1].text)

推荐阅读