You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用BeautifulSoup分别提取主span下多span的价格与菜系数据?

解决爬虫提取价格与菜系的拆分问题

嘿,我来帮你搞定这个爬虫小难题!你现在遇到的是BeautifulSoup提取文本时的常见情况——直接取容器的text属性会把所有子元素的文本无差别拼接在一起,咱们只要顺着HTML的结构拆分提取就能分开价格和菜系啦。

分步实现代码

# 假设你已经完成了网页请求和BeautifulSoup初始化
from bs4 import BeautifulSoup

# 定位到目标容器(你原来的代码这部分是对的)
det = soup.find('span', attrs={'class': 'double-line-ellipsis'})

# 1. 提取价格:目标价格在容器内的第一个<span>标签里
price = det.find('span').get_text(strip=True)
print("提取的价格:", price)  # 输出:₹ 2800 for 2 (approx)

# 2. 提取菜系:所有菜系都在容器内的<a>标签里
cuisine_links = det.find_all('a')
# 遍历所有a标签,提取文本并去除多余空格
cuisines = [link.get_text(strip=True) for link in cuisine_links]
# 把菜系列表转为你需要的字符串格式(比如用顿号分隔)
cuisine_str = "、".join(cuisines)
print("提取的菜系:", cuisine_str)  # 输出:Cantonese、Chinese

关键思路解释

  • 价格部分:HTML里价格是单独放在第一个<span>子元素里的,所以用det.find('span')直接定位这个子标签,再用get_text(strip=True)提取干净的文本(strip=True会自动去掉文本前后的空格、换行符)。
  • 菜系列表:所有菜系都是<a>标签的文本内容,用det.find_all('a')拿到所有菜系标签,再通过列表推导式提取每个标签的文本,最后用join把列表转为适合写入Excel的字符串格式。

这样拆分后,price和cuisine_str就可以分别写入Excel的“价格”列和“菜系”列啦~

内容的提问来源于stack exchange,提问作者user3331874

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:02:50