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

Python网页爬取获取商品价格返回None的问题求助

问题:Python爬虫无法获取Vans球鞋价格,返回None

我想用Python做一个简单的网页爬虫,用来通知女友她喜欢的Vans球鞋什么时候降价。参考了不少教程反复尝试后,现在能成功获取球鞋标题,但获取价格时结果一直是None。我试过更换标签、类名,甚至换其他网站测试,都没解决问题。相关代码和网页截图如下:

import requests
from bs4 import BeautifulSoup

url = "https://www.vans.com.br/tenis-ultrarange-rapidweld-black-white/p/1003500430051U?gad_source=1"
headers = {'User-Agent': "insera aqui seu User Agent"} ## 我去掉了自己的User-Agent,就不贴出来了

site = requests.get(url, headers=headers)
soup = BeautifulSoup(site.content, 'html.parser')

title = soup.find('h1', class_= 'product-name').get_text()
price = soup.find('div', class_='ta-product-price__total' or 'product-price')

print(title)
print(price)

Vans商品页面价格区域截图


问题分析与解决方法

1. 修正类名查找的错误写法

你的代码里class_='ta-product-price__total' or 'product-price'的写法逻辑错误,Python会直接取第一个非空字符串'ta-product-price__total',如果该类不存在就返回None。正确实现“匹配任意一个类名”的写法有两种:

  • 用列表传递多个类名:
price = soup.find('div', class_=['ta-product-price__total', 'product-price'])
  • 使用CSS选择器:
price = soup.select_one('div.ta-product-price__total, div.product-price')

2. 检查页面是否为动态渲染

如果修正写法后仍返回None,大概率是价格数据通过JavaScript动态加载的——requests只能获取页面初始HTML源码,无法执行JS渲染后的内容。可以用两种方式解决:

  • 抓包获取API接口:打开浏览器开发者工具(F12)切换到「网络」标签,刷新页面后找加载价格的API请求(通常是XHR/Fetch类型),直接请求该API获取数据,这种方法效率更高。
  • 用Selenium模拟浏览器渲染:启动真实浏览器加载页面,等待JS渲染完成后提取价格。示例代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://www.vans.com.br/tenis-ultrarange-rapidweld-black-white/p/1003500430051U?gad_source=1"
driver = webdriver.Chrome() # 需提前安装ChromeDriver并配置环境变量
driver.get(url)

# 等待价格元素加载完成
try:
    price_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "ta-product-price__total"))
    )
    price = price_element.text
    title = driver.find_element(By.CLASS_NAME, "product-name").text
    print(title)
    print(price)
finally:
    driver.quit()

3. 确认User-Agent的有效性

确保你的User-Agent是真实的浏览器标识,部分网站会对异常User-Agent返回不同内容,建议直接复制自己浏览器的User-Agent替换使用。

内容的提问来源于stack exchange,提问作者Leandro Vinícius da Mata Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:05:56