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

如何使用BeautifulSoup抓取指定URL页面中的所有价格数据

问题原因及修复方案

1. 代码语法错误

你调用的查找方法名拼写错误,BeautifulSoup的批量查找方法是find_all,不是findall,拼写错误会直接导致方法调用失败返回空值。

2. 缺少反爬请求头

目标站点有基础反爬机制,无标识的裸请求会被拦截,返回的不是正常商品页面内容,因此解析不到对应元素,需要在请求中添加User-Agent头模拟浏览器访问。

3. 解析器优化(可选)

Python内置的html.parser对部分不规范HTML结构的解析容错性较低,可以换成lxml解析器提升解析成功率,需要提前执行pip install lxml安装依赖。


修正后可运行代码

import bs4
import requests

url = 'https://skinport.com/market?cat=Knife&item=Doppler&type=M9+Bayonet&sort=price&order=asc'
# 构造模拟浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

# 发送带请求头的请求
r = requests.get(url, headers=headers)
# 校验请求是否成功
r.raise_for_status()

soup = bs4.BeautifulSoup(r.text, "lxml")
price_elements = soup.find_all("div", {"class": "Tooltip-link"})

# 提取价格文本输出
price_list = [item.text.strip() for item in price_elements]
print("抓取到的价格如下:")
for price in price_list:
    print(price)

额外说明

  • 如果运行后仍返回空列表,说明目标站点的价格数据是前端JS动态渲染的,静态请求无法拿到渲染后的内容,这种情况需要改用selenium、playwright等动态渲染工具抓取,也可以尝试查找站点的公开数据接口直接请求。
  • 抓取数据请遵守目标站点的使用协议,避免高频请求触发反爬限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:57:05