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

使用Beautiful Soup爬取亚马逊页面无法获取完整HTML的问题

解决亚马逊页面爬取返回错误页的问题

嘿,我太懂你这种情况了——用requests爬其他网站都正常,一碰亚马逊就返回“Something went wrong”的错误页,这完全是亚马逊的反爬机制在搞鬼,它把你的请求当成机器人了。下面给你几个实用的解决办法:

1. 加上模拟浏览器的请求头(最关键)

默认情况下,requests发送的请求会带着暴露身份的User-Agent(比如python-requests/xx.x.x),亚马逊一眼就能识别出来。你需要把请求头改成真实浏览器的User-Agent:

import requests
from bs4 import BeautifulSoup

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

# 带请求头发送请求
page = requests.get(
    "https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280/",
    headers=headers
)

soup = BeautifulSoup(page.content, 'html.parser')
print(soup.title)

怎么找自己的User-Agent?打开浏览器按F12,切换到「Network」标签,刷新页面后随便点一个请求,在「Request Headers」里找到User-Agent字段,复制下来就行。

2. 补充Cookie(可选但能提升成功率)

有时候亚马逊会验证会话Cookie,你可以手动在浏览器打开亚马逊商品页,复制Cookie信息加到请求头里:

headers = {
    'User-Agent': '你的浏览器User-Agent',
    'Cookie': '这里粘贴从浏览器复制的Cookie字符串'
}

注意:Cookie有过期时间,过段时间需要重新复制新的。

3. 控制请求频率,别爬太猛

如果短时间内连续发送请求,亚马逊会直接封禁你的IP。爬取时记得加个延迟:

import time

# 每爬一个页面后暂停2秒
time.sleep(2)

做完这些调整后,你应该就能拿到亚马逊商品页的完整HTML了,soup.title也会显示正确的商品标题,而不是错误页的“Sorry! Something went wrong!”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:52:44