You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从HTML中提取价格并存入变量?附代码求助

解决裤子价格提取失败的问题

我看了你的代码,发现几个明显的问题导致你提取不到价格,咱们一步步来修正:

核心问题分析

  1. 页面请求混乱:你先请求了Urban Outfitters的工装裤搜索页,但随后又请求了Patagonia的夹克页面,还覆盖了soup对象——等于你最后处理的是完全无关的页面,自然拿不到目标裤子的价格。
  2. 元素选择器错误:你找span时用的{'aria-label': 'class'}完全不符合页面实际属性,这也是提取不到内容的关键原因。

修正后的代码

针对你目标的Urban Outfitters工装裤搜索页,我调整了代码,适配页面的实际元素结构:

import requests
from bs4 import BeautifulSoup

# 修正URL中的转义字符,确保请求正确页面
url = 'https://www.urbanoutfitters.com/search?q=cargo%20pant&sayt=true'
# 完善User-Agent,避免被网站拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

response = requests.get(url, headers=headers)
# 先检查请求是否成功
if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
    extracted_prices = []
    
    # 根据页面实际结构,定位每个商品的价格容器
    for price_box in soup.find_all('div', class_='c-product-price'):
        # 提取当前价格的文本元素
        price_element = price_box.find('span', class_='c-product-price__current')
        if price_element:
            # 清理文本中的空格和换行,只保留价格内容
            clean_price = price_element.get_text(strip=True)
            extracted_prices.append(clean_price)
    
    print("提取到的工装裤价格:")
    print(extracted_prices)
else:
    print(f"页面请求失败,状态码:{response.status_code}")

额外说明

  • 如果页面需要滚动加载更多商品requests只能获取初始加载的内容,这时候你可能需要用Selenium这类工具模拟浏览器行为,加载完整页面后再提取。
  • 要是后续页面结构有变化,你可以右键价格元素选择「检查」,查看最新的class或属性,再调整代码里的选择器即可。

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

火山引擎 最新活动