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
相关产品推荐
相关产品推荐

