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

运行res.raise_for_status()遇503错误,如何解决?(Python爬亚马逊HTML)

解决请求亚马逊页面时的503 Server Error问题

这个503错误本质是亚马逊的反爬机制在起作用——它识别出你的请求来自Python脚本,而非正常的浏览器访问,所以直接返回了服务不可用的提示。下面给你几个可行的解决思路:

1. 模拟浏览器请求头

最直接的办法是给requests.get()添加浏览器的请求头信息,核心是设置User-Agent字段,让服务器认为你是普通浏览器用户。示例代码如下:

import bs4
import requests

# 替换成你自己浏览器的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'
}

res = requests.get('http://www.amazon.com/gp/product/1593275994/', headers=headers)
res.raise_for_status()

怎么获取自己的User-Agent?打开浏览器按F12进入开发者工具,切换到「网络」标签,刷新一个页面后选中第一个请求,在「请求头」里找到User-Agent字段,复制它的值即可。

2. 控制请求频率

不要短时间内重复发送请求,这会极大触发亚马逊的反爬检测。可以在请求之间加入延迟,比如用time.sleep():

import time
# ... 其他代码
time.sleep(3)  # 每次请求前或后等待3秒
res = requests.get(...)

3. 使用会话保持

用requests.Session()维持会话状态,模拟浏览器的持续访问行为,有时候能绕过一些基础的反爬检测:

import bs4
import requests

headers = {
    'User-Agent': '你的浏览器User-Agent'
}

session = requests.Session()
session.headers.update(headers)
res = session.get('http://www.amazon.com/gp/product/1593275994/')
res.raise_for_status()

额外提示:优先使用官方API

如果你的需求是批量获取亚马逊商品数据,强烈建议使用亚马逊官方的Product Advertising API,这是合规的获取数据方式,不会被反爬机制拦截,也能避免后续可能出现的IP封禁问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:32:33