html - 在 python (BeautifulSoup) 中获取特定的 span 标签文本
问题描述
我在 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:"
,您可以使用:
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())
推荐阅读
- django - Django S3 项目中未显示 Font Awesome 4.7 图标
- ruby-on-rails - 为 Rails 添加 opentok-layout-js 到 webpack
- php - SF3.4 : 如何为我收集的 DTO 补水?
- javascript - 无服务器 AWS 中映射条目的缩进错误
- c# - 已部署 dotnet core react 应用程序,API 路由无法识别
- java - 我如何比较java中的两个小时?
- amazon-web-services - 无法修改 AWS PostgreSQL RDS 实例
- python - 如何通过删除包含以相同模式开头的元素的列表来修改列表列表
- php - MySQL 使用 WHERE 子句获取具有特定列的最新项目
- windows - 用于隐藏 Windows 10 激活通知的批处理脚本