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

Python爬取亚马逊商品评论无法获取下一页数据咨询

问题根源
  • 循环内的请求链接为固定值,没有根据循环进度拼接页码参数,无论循环执行多少次,程序始终请求第一页评论地址,自然无法获取下一页数据。
  • 未携带合法请求头直接发起requests请求,会被亚马逊的反爬机制识别为爬虫,返回人机验证页面而非真实评论内容。
  • 外层页码循环、内层评论遍历循环都使用i作为变量名,会造成变量覆盖,即使修复链接拼接逻辑也会出现页码错乱问题。
修复代码

亚马逊商品评论页通过URL中的pageNumber参数控制分页,第一页对应pageNumber=1,后续页码依次递增,修复后的可运行代码如下:

import requests
from bs4 import BeautifulSoup as bs
import time

Alexa_Reviews = []
# 替换为你自己浏览器的真实User-Agent,避免被反爬拦截
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",
    "Accept-Language": "en-IN,en;q=0.9"
}
# 基础链接预留页码占位符
base_url = "https://www.amazon.in/Fire-TV-Stick-Alexa-Voice-Remote-3rd-Gen/product-reviews/B08R6QR863?ie=UTF8&reviewerType=all_reviews&pageNumber={}"

for page_num in range(1, 500):
    current_url = base_url.format(page_num)
    resp = requests.get(current_url, headers=headers)
    soup = bs(resp.content, "html.parser")
    review_items = soup.find_all("span", class_="a-size-base review-text review-text-content")
    
    # 当前页无评论说明已经爬到最后一页,直接终止循环
    if not review_items:
        break
    
    for item in review_items:
        # strip()去掉评论前后的多余换行和空格
        Alexa_Reviews.append(item.get_text().strip())
    
    # 每次请求间隔1.5秒,降低请求频率避免被IP封禁
    time.sleep(1.5)
注意事项
  • 运行前需要打开浏览器访问对应亚马逊商品评论页,从浏览器开发者工具的请求头里复制你自己的User-Agent值替换代码中的对应字段,直接使用示例中的固定UA很容易被识别为爬虫。
  • 如果运行后依然拿不到内容,可以在headers里补充你访问亚马逊时的Cookie值(同样从浏览器开发者工具里复制),能大幅降低被反爬拦截的概率。
  • 不需要手动调整循环上限,代码已经加了空内容自动终止逻辑,爬到评论最后一页时会自动退出循环,不会真的跑到500页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:24:19