大家好,我用漂亮汤和find_all从网站上提取了一些html元素。因此,我收到了如下bs4.elements.ResultSet列表:
[[<li class="WlSsj w9uVi">neu</li>],
[<li class="WlSsj w9uVi">neu</li>],
[<li class="WlSsj w9uVi">neu</li>, <li class="WlSsj">Terrasse</li>],
[<li class="WlSsj w9uVi">neu</li>,
<li class="WlSsj">Terrasse</li>,
<li class="WlSsj">Parkplatz</li>]
现在,我想检索bs4元素中的文本,并保持相同的列表格式。我一直在尝试创建两个循环。
fet = []
for feat in features_bs:
for fets in feat:
fet.append(fets.text)
features.append(fet)
第一个循环查看原始列表(features_bs)中的每个列表(壮举)。第二部分查看每个内部列表(专长)中的每个元素(fets),然后将元素更改为文本。现在,我希望将文本添加到一个空列表(fet)中,但是我希望保持与以前相同的格式,列表中的列表也是如此。目前,我只得到第一个循环中的文本,如下所示:
['neu',
'neu',
'neu',
'Terrasse',
'neu',
'Terrasse',
'Parkplatz']
不过,我希望产出如下:
[['neu'],
['neu'],
['neu','Terrase'],
['neu'],
['Terrase']
['Parkplatz']]
谢谢你提前帮忙。
发布于 2022-03-24 13:33:30
接近你的目标-但有一个临时清单缺失:
fet = []
for feat in features_bs:
el = []
for fets in feat:
el.append(fets.text)
fet.append(el)
fet
输出:
[['neu'], ['neu'], ['neu', 'Terrasse'], ['neu'], ['Terrasse'], ['Parkplatz']]
您还可以调整流程,并将其直接转换为预期的格式:
from bs4 import BeautifulSoup
html = '''
<ul>
<li class="WlSsj w9uVi">neu</li>
</ul>
<ul>
<li class="WlSsj w9uVi">neu</li>
</ul>
<ul>
<li class="WlSsj w9uVi">neu</li>, <li class="WlSsj">Terrasse</li>
</ul>
<ul>
<li class="WlSsj w9uVi">neu</li>
</ul>
<ul>
<li class="WlSsj">Terrasse</li>
</ul>
<ul>
<li class="WlSsj">Parkplatz</li>
</ul>
'''
soup = BeautifulSoup(html)
data = []
for ul in soup.find_all('ul'):
el = []
for e in ul.find_all('li'):
el.append(e)
data.append(el)
data
输出:
[['neu'], ['neu'], ['neu', 'Terrasse'], ['neu'], ['Terrasse'], ['Parkplatz']]
https://stackoverflow.com/questions/71603001
复制相似问题