我正在尝试从名为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)这是我得到的当前输出:KHLJokeritKHL有任何想法吗?我试图找出的是有一种方法只能获得“笑话”部分 最佳答案 您可以为此使用.find(),如下所示:from bs4 import BeautifulSoupmy_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消除了多余的空格。关于python - BeautifulSoup4-使用getText()获取不正确的文本输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57810077/
10-12 22:43