Python:将列表列表中的 bs4.element.ResultSet 个元素更改为文本
Python: Changing bs4.element.ResultSet elements in list of lists to text
大家好,我使用 beautifulsoup 和 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) 中的每个列表(专长)。第二个查看每个内部列表 (feats) 中的每个元素 (fets),然后将元素更改为文本。我现在想将文本追加回一个空列表 (fet),但是我想在列表内的列表中保持与以前相同的格式。目前我只在第一个循环中得到这样的文本:
['neu',
'neu',
'neu',
'Terrasse',
'neu',
'Terrasse',
'Parkplatz']
但是我希望输出是:
[['neu'],
['neu'],
['neu','Terrase'],
['neu'],
['Terrase']
['Parkplatz']]
提前感谢您的帮助。
接近您的目标 - 但缺少一个临时列表:
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']]
大家好,我使用 beautifulsoup 和 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) 中的每个列表(专长)。第二个查看每个内部列表 (feats) 中的每个元素 (fets),然后将元素更改为文本。我现在想将文本追加回一个空列表 (fet),但是我想在列表内的列表中保持与以前相同的格式。目前我只在第一个循环中得到这样的文本:
['neu',
'neu',
'neu',
'Terrasse',
'neu',
'Terrasse',
'Parkplatz']
但是我希望输出是:
[['neu'],
['neu'],
['neu','Terrase'],
['neu'],
['Terrase']
['Parkplatz']]
提前感谢您的帮助。
接近您的目标 - 但缺少一个临时列表:
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']]