在Python中获取特定的span标记文本(BeautifulSoup)

2022-01-27 23:50:05 标签 htmlpython-3.xweb-scrapingbeautifulsoup

我用Python3上的BeautifulSoup抓取MyAnimeList的一些信息,我试图获得一个节目的“状态”的信息,但访问它有麻烦。

这里是html:

<h2>Information</h2>
    <div>
        <span class="dark_text">Type:</span>
        <a href="https://myanimelist.net/topanime.php?type=movie">Movie</a>
    </div>
    <div class="spaceit">
        <span class="dark_text">Episodes:</span>
        1
    </div>
    <div>
        <span class="dark_text">Status:</span>
        Finished Airing
    </div>

所有这些也包含在另一个div标签中,但我只包含了我想要刮掉的那部分html。为了澄清,我想获得文本“完成播放”包含在“状态”。

这是我到目前为止的代码,但我真的不确定这是否是最好的方法或从这里去哪里:

Page_soup = soup(Page_html, "html.parser")
extra_info = Page_soup.find('td', attrs={'class': 'borderClass'})
span_html = extra_info.select('span')
for i in range(len(span_html)):
    if 'Status:' in span_html[i].getText():

任何帮助将感激感谢!

###获取文本旁边<span> with "Status:""Status:" you c您可以使用:

from bs4 import BeautifulSoup
html_doc = """
<h2>Information</h2>
    <div>
        <span class="dark_text">Type:</span>
        <a href="https://myanimelist.net/topanime.php?type=movie">Movie</a>
    </div>
    <div class="spaceit">
        <span class="dark_text">Episodes:</span>
        1
    </div>
    <div>
        <span class="dark_text">Status:</span>
        Finished Airing
    </div>
"""
soup = BeautifulSoup(html_doc, "html.parser")
txt = soup.select_one('span:-soup-contains("Status:")').find_next_sibling(text=True)
print(txt.strip())

打印:

Finished Airing

或者:

txt = soup.find("span", text="Status:").find_next_sibling(text=True)
print(txt.strip())

# # #另一个解决方案(可能):

f = soup.find_all('span',attrs={'class':'dark_text'})
for i in f:
     if i.text == 'Status:':
         print(i.parent.text)

并将“Status:”更改为任何其他你想要找到的东西。

希望我帮助!

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码