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

网页爬虫返回空列表问题求助

网页爬虫返回空列表问题求助

看起来你在爬取The Whisky Exchange的日本威士忌页面时,遇到了产品列表返回空的问题,我来帮你梳理下可能的原因和解决思路~

首先咱们先排查最基础的问题:

1. 确认请求是否成功被服务器接受

你的代码里没有检查请求的响应状态码,这是第一步要做的。很多时候网站会通过反爬机制拦截未授权的请求,导致你拿到的内容不是完整的页面。

可以在请求后加上状态码打印:

r = requests.get('https://www.thewhiskyexchange.com/c/35/japanese-whisky', headers=headers)
print("响应状态码:", r.status_code)
  • 如果状态码是200,说明请求成功,但页面内容可能和你预期的不一样;
  • 如果是403、404或者503这类,说明请求被拦截了,这时候需要优化请求头,甚至考虑用模拟浏览器的工具。

2. 检查元素选择器是否匹配当前页面结构

网站的前端结构可能会更新,你用的product-grid__item类名可能已经失效,或者元素层级变了。

你可以把返回的页面内容保存下来看看:

with open('page.html', 'w', encoding='utf-8') as f:
    f.write(r.text)

打开这个HTML文件,对比浏览器里的页面结构(按F12打开开发者工具),确认产品列表的li元素class是否还是product-grid__item。如果已经变更,就需要修改选择器。

3. 应对反爬和动态加载

如果请求状态码是200,但保存的页面里没有产品列表,那大概率是网站用了JavaScript动态加载内容——requests只能抓取静态HTML,动态渲染的内容拿不到。

这时候可以用selenium这类工具模拟浏览器加载页面,比如示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

# 配置浏览器选项
options = Options()
options.add_argument('--headless=new')  # 无头模式,不弹出浏览器窗口
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0')

driver = webdriver.Chrome(options=options)
driver.get('https://www.thewhiskyexchange.com/c/35/japanese-whisky')
# 等待页面加载完成
driver.implicitly_wait(5)

# 查找产品列表
productlist = driver.find_elements(By.CLASS_NAME, 'product-grid__item')
print(f"找到{len(productlist)}个产品")

driver.quit()

另外,也可以尝试完善请求头,增加更多浏览器标识,比如:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://www.thewhiskyexchange.com/'
}

先从检查状态码和页面内容开始,一步步排查应该就能找到问题啦~

备注:内容来源于stack exchange,提问作者Martha Imoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:43:12