You need to enable JavaScript to run this app. 使用Python+BeautifulSoup爬取亚马逊女鞋热销榜出现空结果的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

使用Python+BeautifulSoup爬取亚马逊女鞋热销榜出现空结果的问题求助

爬虫空结果问题排查与修正方案

核心故障原因

  • 代码照搬图书类目的元素定位规则,和当前目标页面(女士时尚运动鞋热销榜)的实际DOM结构不匹配:原代码筛选的a-section a-spacing-none aok-relative类名的div节点,在当前目标页面已不存在,循环遍历不到任何商品节点,最终返回空列表。
  • 请求逻辑存在疏漏:URL拼接规则适配的是旧的图书榜单地址,和当前运动鞋类目的分页参数结构不符,可能拿到的是404页、人机验证拦截页,而非真实的榜单内容。
  • 表格生成逻辑和采集字段不匹配:代码已经注释掉了作者字段的采集逻辑,单条商品记录只有4个字段,但初始化DataFrame时仍保留5个列名,就算拿到数据也会触发维度不匹配的报错。

相关逻辑说明

  • 逐页循环的作用:遍历设置的爬取页数范围,每循环一次调用一次get_data函数请求对应页码的榜单内容,把单页返回的商品列表存入results数组。
  • 嵌套列表摊平逻辑:flatten方法会把原本嵌套的二维列表(结构为「单页商品列表组成的列表」)拆解为一维的商品条目列表,满足pandas创建表格的入参要求。

修正步骤

  1. 验证请求有效性
    在请求代码后增加打印语句,确认返回内容是否为真实榜单页面:
    print(r.status_code)
    print(r.text[:1000])
    
    若返回非200状态码,或内容为人机验证提示,需要在请求头中补充Accept-Language等字段,模拟真实浏览器的访问特征,同时在请求间隔增加随机延时,避免触发反爬拦截。
  2. 适配页面元素定位规则
    打开目标榜单页面,通过浏览器检查工具确认当前实际的商品容器、商品名、评分、评分数、价格对应的节点类名,替换原代码中照搬旧规则的类名匹配逻辑。
  3. 修正表格字段定义
    匹配实际采集的4个字段,调整DataFrame的列定义:
    df = pd.DataFrame(flatten(results), columns=['Product Name', 'Rating', 'Customers_Rated', 'Price'])
    
  4. 修正URL拼接逻辑
    对照目标页面的真实分页参数格式调整URL拼接规则,确保每个页码请求都能返回对应内容的榜单页面。

注意:亚马逊平台有严格的反爬机制,无规则的高频请求大概率会触发访问限制,建议控制请求频率,必要时增加代理池切换节点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 05:36:04