使用Python爬取京东商品评论时翻页URL无变化,如何实现翻页抓取?
京东评论翻页爬取解决方案
京东评论采用AJAX动态加载机制,切换分页时不会刷新页面URL,你需要直接请求京东的评论接口实现翻页,具体操作步骤如下:
- 抓包获取评论接口规则
打开浏览器控制台切换到「网络」标签,筛选Fetch/XHR请求,切换评论分页后可找到格式为https://club.jd.com/comment/productPageComments.action的接口,核心请求参数如下:productId:商品ID,你目标页面的商品ID为7420374,可直接从原商品URL提取page:评论页码,从0开始计数pageSize:单页返回评论条数,默认值为10score:评论筛选类型,0为全部评论,1为差评,2为中评,3为好评
- 构造请求实现翻页
循环修改请求参数中的page值即可获取不同分页的评论数据,请求时必须携带正确的请求头,否则会触发反爬拦截,必填请求头包括User-Agent、Referer(值设为目标商品页面地址即可)。 - 示例代码片段
import requests import time 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", "Referer": "https://item.jd.com/7420374.html" } product_id = 7420374 # 爬取前5页评论示例 for page in range(5): api_url = f"https://club.jd.com/comment/productPageComments.action?productId={product_id}&score=0&sortType=5&page={page}&pageSize=10" resp = requests.get(api_url, headers=headers) if resp.status_code == 200: comment_data = resp.json() # 评论数据存储在comment_data['comments']字段中,可自行解析存储 print(f"第{page+1}页评论获取成功,共{len(comment_data.get('comments', []))}条") else: print(f"第{page+1}页评论获取失败,状态码:{resp.status_code}") # 控制请求频率避免被封 time.sleep(1.5)
注意:京东接口有严格的反爬机制,请求频率过高会返回403错误或者触发人机校验,建议请求间隔设置为1-2秒,也可按需搭配代理IP使用。
内容的提问来源于stack exchange,提问作者Daniel Clarke
相关产品推荐
相关产品推荐

