【发布时间】:2015-11-10 11:14:32
【问题描述】:
如何在使用 python 3 和 beautifulsoup 4 时以相同的排列方式获取所有文本。我尝试了一个 for 循环,但它不起作用。
from bs4 import BeautifulSoup
data = """
<body>
<div id="Select">
<h1 id="wall">
First
</h1>
</div>
</div>
<div id="color_acts">
<p id="acts_h">
Choose
</p>
<p id="actshead">
Color
</p>
<p id="acts">
Blue
</p>
</div>
<div id="Select">
<h1 id="wall">
Second
</h1>
</div>
</div>
<div id="color_acts">
<p id="acts_h">
Choose
</p>
<p id="actshead">
Color
</p>
<p id="acts">
Green
</p>
</div>
</body>
"""
soup = BeautifulSoup(data, "html.parser")
for Colors in soup.find_all('div', id='Select'):
CC = Colors.find('h1').text
print(CC)
SS = soup.find('div', id='color_acts')
print(SS)
我的输出:
First
<div id="color_acts">
<p id="acts_h">
Choose
</p>
<p id="actshead">
Color
</p>
<p id="acts">
Blue
</p>
</div>
Second
<div id="color_acts">
<p id="acts_h">
Choose
</p>
<p id="actshead">
Color
</p>
<p id="acts">
Blue
</p>
</div>
我的预期输出:
First
Choose
Color
Blue
Second
Choose
Color
Green
请注意,我的预期输出是蓝色然后是绿色,但实际输出只有两次蓝色。如何使输出具有正确的颜色并防止打印 html 标签?
【问题讨论】:
-
您的意思是要打印正确的颜色吗?您的输出有两次蓝色,您的预期输出有蓝色然后是绿色。还是您的意思是要从打印件中删除 HTML 标记?
-
两者。删除 HTML 标签并获得正确的输出
标签: python python-3.x text beautifulsoup bs4