如何解决使用 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

感谢回答!

阅读 660
1 个回答
✓ 已被采纳

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏