gpt4 book ai didi

python - BeautifulSoup4 - 使用 `getText()` 获取不正确的文本输出

转载 作者:行者123 更新时间:2023-12-01 07:18:47 25 4
gpt4 key购买 nike

我正在尝试从名为 Elite Prospects ( https://www.eliteprospects.com/team/41/jokerit ) 的网站中提取一些文本。这是该页面的源代码:

<div class="semi-logo">
Jokerit
<small>
<span>
<i> <img class="nation-flag" src="//files.eliteprospects.com/layout/flagsmedium/9.png"> </i>
<a href="https://www.eliteprospects.com/league/khl">KHL</a>
</span>
</small>
</div>

我特别尝试提取球队名称(在本例中为“Jokerit”)以及位于 a href 标签中的联赛名称。我成功地提取了联赛名称,但我尝试提取球队名称的方式给了我“JokeritKHL”。我将此代码用于多个示例,因此它还需要能够提取两个单词的团队名称(例如“Guelph Storm”)。

这是我的代码:

team_logo= scraper.find(class_='semi-logo')
team_name = team_logo.getText(strip=True)
league = team_logo.find('a')
league = league.getText()
print(league)
print(team_name)

这是我得到的当前输出:

KHL
JokeritKHL

有什么想法吗?

我想知道是否有一种方法可以只获得“Jokerit”部分

最佳答案

您可以使用 .find() 来实现此目的,如下所示:

from bs4 import BeautifulSoup

my_html = """
<div class="semi-logo">
Jokerit
<small>
<span>
<i> <img class="nation-flag" src="//files.eliteprospects.com/layout/flagsmedium/9.png"> </i>
<a href="https://www.eliteprospects.com/league/khl">KHL</a>
</span>
</small>
</div>
"""

soup = BeautifulSoup(my_html, 'lxml')

extracted_text = soup.div.find(text=True)
print(extracted_text.strip())

如果您查看 soup.div.children,您会发现标记中存在三个直接后代元素:标记之前的文本、标记(及其内容)和最后还有一些文本,因为在本例中末尾有一个 \n 。所以这只是返回文本元素。 .strip 消除了多余的空格。

关于python - BeautifulSoup4 - 使用 `getText()` 获取不正确的文本输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com