我是网页抓取的新手,试图抓取一个无序的列表。我希望列表项目被刮成一个列表项目用逗号分隔。这是我要删除的列表。
<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只给了我一个逐行列表项的列表。
个人家庭
组
为什么这些不出现在同一行中,我如何将这些列表项刮入逗号分隔的列表中?有人能帮忙吗?
我得到以下输出:
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
发生了什么
您正在使用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']