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

使用Python的BeautifulSoup爬取产品时无法输出产品列表求助

解决网页爬取产品列表无输出的问题

问题原因分析

你的代码执行后productlist无输出,大概率是以下两个原因:

  1. 网站反爬机制拦截:虽然你添加了基础的User-Agent,但网站可能识别出这是爬虫请求,返回的内容并非实际产品页面(可能是空页面或验证页)。
  2. 页面结构已变更:目标网站的产品列表元素类名可能已从product-grid__item修改为其他名称。

分步解决方案

1. 先验证请求是否获取到正确内容

在解析前先打印响应状态码和部分内容,确认请求是否成功:

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/89.0.4389.82 Safari/537.36'}

k = requests.get('https://www.thewhiskyexchange.com/c/35/japanese-whisky', headers=headers)
# 打印状态码,200表示请求成功
print(k.status_code)
# 打印页面前500个字符,判断是否是实际产品页面
print(k.text[:500])

如果状态码不是200,说明请求被拦截;如果状态码是200但内容里没有产品相关文字,大概率是反爬导致返回了无效内容。

2. 完善请求头,模拟真实浏览器

给请求头添加更多字段,让请求更接近真实浏览器行为:

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/89.0.4389.82 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://www.thewhiskyexchange.com/',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
}

# 使用Session保持会话,提升请求成功率
session = requests.Session()
response = session.get('https://www.thewhiskyexchange.com/c/35/japanese-whisky', headers=headers)

soup = BeautifulSoup(response.text, 'lxml')  # 换成lxml解析器,解析更稳定
productlist = soup.find_all("li", class_="product-grid__item")
print(len(productlist))  # 打印产品数量,验证是否获取到
print(productlist)

注意:需要先安装lxml解析器,执行pip install lxml。

3. 检查页面元素选择器是否正确

如果上面的方法还是无效,打开目标网页,按F12打开开发者工具,找到产品列表的<li>元素,查看它的class是否还是product-grid__item。如果类名变更,修改find_all里的class参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:01:11