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

Scrapy爬虫首页数据正常,无法提取下一页数据问题排查

问题排查与修复方案

你的爬虫第一页正常但翻页后无法获取数据,核心问题出在翻页链接定位不健壮、商品选择器依赖不稳定的页面类,以及缺少基础反爬处理,以下是具体修复:

1. 核心问题分析

  • 翻页链接硬编码层级:你用的XPath依赖固定的div索引(如div[52]),亚马逊页面结构会随页码、结果数量变化,导致无法正确抓取下一页链接。
  • 商品选择器不可靠:div.sg-col-4-of-12是布局类名,不同页码/设备渲染可能会改变,导致后续页面找不到商品容器。
  • 反爬检测拦截:默认Scrapy请求的User-Agent会被亚马逊识别为爬虫,后续页面可能返回验证码或空内容。

2. 修改后的爬虫代码

import scrapy
from amazonscraper.items import AmazonscraperItem
from scrapy.loader import ItemLoader


class AmazonspiderSpider(scrapy.Spider):
    name = 'amazonspider'
    allowed_domains = ['amazon.com']
    start_urls = ['https://www.amazon.com/s?i=fashion-womens-intl-ship&bbn=16225018011&rh=n%3A16225018011%2Cn%3A1040660%2Cn%3A1045024&pd_rd_r=2da30763-bfe6-4a38-b17a-77236fa718c5&pd_rd_w=JtaUW&pd_rd_wg=BtgRm&pf_rd_p=6a92dcea-e071-4bb9-866a-369bc067390d&pf_rd_r=86NBFKV4TA7CCSEVNBM7&qid=1671522114&rnid=1040660&ref=sr_pg_1']

    def parse(self, response):
        # 用亚马逊官方定义的商品容器属性定位,稳定性更高
        products = response.css('div[data-component-type="s-search-result"]')
        for product in products:
            l = ItemLoader(item=AmazonscraperItem(), selector=product)  
            # 通用商品名称选择器,避免依赖可变类名
            l.add_css('name', 'h2 a span')
            l.add_css('price', 'span.a-price span.a-offscreen')
            l.add_css('review', 'i.a-icon span.a-icon-alt')
            yield l.load_item()
        
        # 用翻页按钮的标准类名定位,不依赖页面层级
        next_page = response.css('a.s-pagination-item.s-pagination-next::attr(href)').get()
        if next_page:
            # response.follow自动补全域名,无需手动拼接
            yield response.follow(next_page, callback=self.parse)

3. 补充反爬配置(修改settings.py)

# 设置真实浏览器的User-Agent,避免被识别为爬虫
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'

# 设置请求延迟,降低被封禁概率
DOWNLOAD_DELAY = 2

# 可选:若亚马逊robots.txt限制爬虫,可关闭遵循(注意合规性)
# ROBOTSTXT_OBEY = False

4. 关键修改说明

  • 商品容器:div[data-component-type="s-search-result"]是亚马逊搜索结果的标准标识,不受页面布局变化影响。
  • 翻页链接:通过翻页按钮的专属类名a.s-pagination-item.s-pagination-next定位,完全脱离硬编码层级,适配所有页码。
  • 反爬处理:真实User-Agent让请求模拟浏览器行为,下载延迟降低请求频率,减少被拦截风险。

5. 调试建议

如果仍有问题,开启DEBUG日志查看响应内容:

scrapy crawl amazonspider -s LOG_LEVEL=DEBUG

检查后续页面是否返回验证码,若出现验证码,需考虑添加代理IP或使用Cookie池进一步规避反爬。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:55:23