如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象?
1、场景:使用 BeautifulSoup 提取指定页面<span>标签中类别为'green'的内容。
2、代码:
from urllib.request import urlopenfrom 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