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

使用Python爬取网页表格中产品成分信息的代码排障求助

问题根因

原有代码无法提取成分的核心问题有3个:

  • 执行table1 = soup.find(...).text.strip()时直接拿到了字符串类型的纯文本,后续对字符串调用.find_all('tr')会直接触发属性错误,根本无法遍历表格节点
  • 选择器使用的是前端构建工具生成的动态哈希类名,类名会随页面版本更新随机变化,定位逻辑不稳定
  • 页面的成分信息没有放在传统<table>标签的<tr>/<td>结构中,原有遍历表格行的逻辑完全不匹配页面实际DOM结构

目标提取区域(红圈标注成分)

修正后可运行代码
import requests
from bs4 import BeautifulSoup

# 目标页面地址
url = "https://mamaearth.in/product/mamaearth-me-deo-for-a-scent-that-s-unique-to-you-120-ml"
# 补全请求头绕过基础反爬
req_headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}

resp = requests.get(url, headers=req_headers)
soup = BeautifulSoup(resp.text, "lxml")

# 通过固定的Composition标题定位成分区块,不受动态类名影响
comp_title = soup.find(lambda tag: tag.text.strip() == "Composition" and tag.name in ["h3", "h4", "p", "div"])
comp_content = comp_title.find_next_sibling()
# 提取所有成分名称,直接输出结果
ingredients = [item.text.strip() for item in comp_content.find_all("li")]

print(ingredients)
代码说明
  • 移除了提前提取文本的错误逻辑,全程操作BeautifulSoup标签对象完成节点查找
  • 放弃易失效的动态类选择器,通过页面固定的「Composition」板块标题定位内容,长期运行稳定性更高
  • 适配页面实际用无序列表存储成分的结构,直接提取列表项文本,不需要依赖pandas生成冗余表格
  • 运行后直接输出截图红圈标注的全部成分名称,无多余内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:15:30