从BS4中提取并存储为Python中的列表元素
我使用BeautifulSoup4从网页中提取了包装在多个HTMLP标记中的数据。我已将所有提取的数据存储在一个列表中。但我希望每个提取的数据都作为单独的列表元素,用逗号分隔 HTML内容结构:从BS4中提取并存储为Python中的列表元素,python,beautifulsoup,Python,Beautifulsoup,我使用BeautifulSoup4从网页中提取了包装在多个HTMLP标记中的数据。我已将所有提取的数据存储在一个列表中。但我希望每个提取的数据都作为单独的列表元素,用逗号分隔 HTML内容结构: <ul> <li> <p> <span class="TextRun"> <span class="NormalTextrun"> Data 1 </span>
<ul>
<li>
<p>
<span class="TextRun">
<span class="NormalTextrun"> Data 1 </span>
</span>
</p>
</li>
<li>
<p>
<span class="TextRun">
<span class="NormalTextrun"> Data 2 </span>
</span>
</p>
</li>
<li>
<p>
<span class="TextRun">
<span class="NormalTextrun"> Data 3 </span>
</span>
</p>
</li>
</ul>
电流输出:
[数据1数据2数据3]
预期产出:
[数据1、数据2、数据3]
非常感谢您的帮助 这应该能解决你的问题
data = [x.text for x in elem.find_all('span', attrs={'class':'TextRun'})]
这将提供正确的输出:
data = [ele.text for ele in soup.find_all('span', {'class':'NormalTextrun'})]
print(data)
输出:
[' Data 1 ', ' Data 2 ', ' Data 3 ']
打印数据会给你:
['data 1'、'data 2'、'data 3']
我认为@Sagun Shrestha的建议是有效的。更详细地处理它,如内部span
和额外的空格。也许你应该试试:
data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print(data)
如果您特别希望字符串输出不带引号。您可以尝试以下方法:
data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print('[', ', '.join(data), ']', sep='')
希望这是你想要的
data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print(data)
data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print('[', ', '.join(data), ']', sep='')