我对网络抓取和尝试抓取无序列表是个新手。我想要将列表项拼凑成一个用逗号分隔的列表项。这是我想要清理的列表。
<div class="spec-list attributes-modality">
<h5 class="spec-subcat">Modality</h5>
<div class="col-split-xs-1 col-split-md-1">
<ul class="attribute-list copy-small">
<li class="">Individuals</li>
<li class="">Family</li>
<li class="">Group</li>
</ul></div></div>这是我的尝试:
modalitydiv = soup.find('div', class_='spec-list attributes-modality')
modality = modalitydiv.find('ul', class_='attribute-list copy-small').text.strip()我的try只给了我一个逐行列表项的列表。
个人
家庭
组
为什么这些没有出现在同一行中,以及如何将此列表项剪切到逗号分隔的列表中?有人能帮帮忙吗?
发布于 2021-10-05 15:23:48
我得到了以下输出:
from bs4 import BeautifulSoup
html_doc="""
<div class="spec-list attributes-modality">
<h5 class="spec-subcat">Modality</h5>
<div class="col-split-xs-1 col-split-md-1">
<ul class="attribute-list copy-small">
<li class="">Individuals</li>
<li class="">Family</li>
<li class="">Group</li>
</ul></div></div>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
p=', '.join([x.get_text(strip = True) for x in soup.select('ul.attribute-list.copy-small>li')])
print(p)输出:
Individuals, Family, Group发布于 2021-10-05 14:59:59
会发生什么?
您正在使用仅删除前导字符和尾随字符的strip()。
解决方案
使用split()而不是strip()将字符串拆分成一个列表:
modalitydiv = soup.find('div', class_='spec-list attributes-modality')
modality = modalitydiv.find('ul', class_='attribute-list copy-small').text.split()输出
['Individuals', 'Family', 'Group']https://stackoverflow.com/questions/69452558
复制相似问题