首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列表项抓取为逗号分隔值

将列表项抓取为逗号分隔值
EN

Stack Overflow用户
提问于 2021-10-05 14:43:50
回答 2查看 62关注 0票数 0

我对网络抓取和尝试抓取无序列表是个新手。我想要将列表项拼凑成一个用逗号分隔的列表项。这是我想要清理的列表。

代码语言:javascript
复制
<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>

这是我的尝试:

代码语言:javascript
复制
modalitydiv = soup.find('div', class_='spec-list attributes-modality')
modality = modalitydiv.find('ul', class_='attribute-list copy-small').text.strip()

我的try只给了我一个逐行列表项的列表。

个人

家庭

为什么这些没有出现在同一行中,以及如何将此列表项剪切到逗号分隔的列表中?有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-05 15:23:48

我得到了以下输出:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
Individuals, Family, Group
票数 1
EN

Stack Overflow用户

发布于 2021-10-05 14:59:59

会发生什么?

您正在使用仅删除前导字符和尾随字符的strip()

解决方案

使用split()而不是strip()将字符串拆分成一个列表:

代码语言:javascript
复制
modalitydiv = soup.find('div', class_='spec-list attributes-modality')
modality = modalitydiv.find('ul', class_='attribute-list copy-small').text.split()

输出

代码语言:javascript
复制
['Individuals', 'Family', 'Group']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69452558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档