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

使用BeautifulSoup无法提取嵌套结构中的销量数据求助

解决嵌套span销量数据提取问题

先指出你代码里的核心问题:

  • 遍历child.descendants会拿到文本、注释这类非标签节点,调用baby.find('span')会直接报错,因为这些节点没有find方法。
  • 多层嵌套循环完全多余,BeautifulSoup自带的选择器可以直接定位目标元素,不用逐层遍历。

下面是修正后的代码,同时加上防反爬的请求头(很多网站会拦截无标识的请求):

import requests
from bs4 import BeautifulSoup
import re

def getInfo(listing_link):
    # 模拟浏览器请求头,避免被网站拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    response = requests.get(listing_link, headers=headers)
    # 自动识别网页编码,避免乱码
    response.encoding = response.apparent_encoding
    soup = BeautifulSoup(response.text, "html.parser")
    
    # 用正则匹配包含"wt-text-caption"类的span,不用加空格,匹配包含该字符串即可
    sales_spans = soup.find_all("span", class_=re.compile(r"wt-text-caption"))
    
    # 提取并打印销量文本
    for span in sales_spans:
        sales_text = span.get_text(strip=True)
        if sales_text:
            print(f"提取到销量:{sales_text}")

# 替换成你的商品链接调用
# getInfo("https://example.com/your-listing")

如果销量是在特定父容器下的嵌套span,可以更精准定位,比如先找到父div再找子元素(假设父div有wt-display-inline-block类):

parent_divs = soup.find_all("div", class_="wt-display-inline-block")
for div in parent_divs:
    sales_span = div.find("span", class_=re.compile(r"wt-text-caption"))
    if sales_span:
        print(sales_span.get_text(strip=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:55:18