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

Python新手如何爬取wiggle.co.uk山地自行车产品名称与价格

解决方案

现有代码的错误点

  • 语法大小写错误:Python关键字import/from/for/print必须全小写,同时变量名大小写敏感,你定义的Page/Soup后续用小写page/soup调用会触发报错
  • 字符串未加引号:requests.get()的URL参数是字符串类型,必须用英文半角引号包裹
  • 引号格式错误:代码内所有引号必须使用英文半角格式,中文引号会直接触发语法错误
  • CSS选择器规则错误:select()方法使用类选择器时,类名前必须加.前缀,你原代码不仅没有加前缀,类名里的短横线还误用了全角字符

正确的元素审查与提取方法

  1. 按F12打开浏览器开发者工具,点击左上角元素选择按钮,再点击页面上你要提取的产品名/价格,元素面板会自动定位到对应DOM节点
  2. 右键定位到的DOM节点,选择「复制」-「复制选择器」,可直接得到规范的CSS选择器
  3. 可在开发者工具控制台输入document.querySelectorAll("你复制的选择器"),验证返回的节点是否和你要提取的内容匹配

修正后可运行代码

import requests
from bs4 import BeautifulSoup

# 加请求头模拟浏览器访问,避免被网站反爬拦截
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"
}
url = "https://www.wiggle.co.uk/cycle/mountain-bikes"
page = requests.get(url, headers=headers)
# 先验证请求是否成功,200代表正常返回
print("请求状态码:", page.status_code)
soup = BeautifulSoup(page.content, "html.parser")

# 提取产品名称
product_names = soup.select(".bem-product-thumb__name--grid")
# 提取产品价格
product_prices = soup.select(".bem-product-price__unit--grid")

# 成对输出前48个产品的名称和价格
for name, price in zip(product_names[:48], product_prices[:48]):
    # 去掉英镑符号,只保留数字格式的价格
    clean_price = price.text.strip().replace("£", "")
    print(f"产品名:{name.text.strip()},价格:{clean_price}")

如果运行后请求状态码不是200,说明请求被网站反爬策略拦截,可以尝试更换UA头或者增加访问延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:36:03