如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象?

如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象?

1、场景:使用 BeautifulSoup 提取指定页面<span>标签中类别为'green'的内容。

2、代码:

from urllib.request import urlopen

from bs4 import BeautifulSoup

html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')

bs = BeautifulSoup(html.read(), 'html.parser')

name_list = bs.find_all('span', {'class':'green'})

for name in name_list:

print(name.get_text())

3、问题:提取 name_list 后发现在遍历的过程中,某些名字存在回车符号。例如:第一个元素应该是 Anna Pavlovna Scherer,但运行的结果是 Anna Pavlovna 和 Scherer,变成了两个元素。

我检查了一下该网页的源代码,HTML代码中 Anna Pavlovna 和 Scherer 之间的确存在回车符,这不影响浏览器显示,但在运行代码时就显示不正常了(变成两个元素)。

另外,我也考虑将 name 转换为字符串类型(str),这样可以替换掉元素中间的回车符,但这样的话后续就没有办法使用 .get_text() 方法了。

请问有没有在可以使用 .get_text() 方法的前提下,去掉 Anna Pavlovna 和 Scherer 之间的回车符,让两个元素正常确认为一个元素?

4、环境:Fedora Linux 38,Python 3.11.5,BeautifulSoup 4.12.2

感谢回答!


回答:

运行没问题,显示看起来是两个元素其实是一个元素,只是它把换行符显示成换行,你可以把get_text()的结果replace('\n','')就行

以上是 如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象? 的全部内容, 来源链接: utcz.com/p/939024.html

回到顶部