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

Scrapy分页失效:运行几天后仅能爬取第一页

可能的问题及排查修复方案
  • 请求头不匹配
    网站可能新增了反爬校验,比如检查User-Agent、Referer或Cookie。你手动用Scrapy Shell时,可能继承了浏览器的请求头(比如从浏览器复制的UA),但爬虫里用的是默认Scrapy UA,或者请求头缺失关键字段。
    排查:在Shell里执行response.request.headers查看成功请求的头信息,对比爬虫代码里的请求头。
    修复:把Shell里的有效请求头(比如User-Agent、Referer)添加到爬虫的start_requests方法里,或者在settings.py的DEFAULT_REQUEST_HEADERS中全局配置。

  • 分页URL构造错误
    要么是你爬虫里生成第二页URL的逻辑出了问题(比如页码递增错误、参数名写错),要么是网站的分页规则悄悄改了(比如上周用page=2,现在换成offset=20)。
    排查:把爬虫生成的第二页URL和Shell里能成功访问的URL做对比,看参数、路径是否一致。如果是POST请求分页,检查表单数据是否正确。
    修复:修正分页参数的生成逻辑,或者重新解析页面里的下一页链接(比如用response.css('a.next::attr(href)').get()提取真实下一页地址,不要自己拼接)。

  • Cookie未跨请求传递
    部分网站需要会话Cookie才能继续翻页,爬虫第一页请求得到的Cookie没带到第二页,导致被拦截。而Shell会自动保存Cookie,所以能正常访问。
    排查:在爬虫里打印第二页请求的Cookie,对比Shell里的Cookie。
    修复:确保settings.py中COOKIES_ENABLED = True,或者在请求时通过meta传递Cookie容器:

    yield scrapy.Request(next_page_url, meta={'cookiejar': response.meta.get('cookiejar', 1)}, callback=self.parse)
    
  • 爬取频率触发反爬
    爬虫爬完第一页立刻请求第二页,速度远超正常用户行为,被网站临时拦截。手动用Shell时请求间隔长,所以没触发限制。
    排查:在settings.py添加DOWNLOAD_DELAY = 3(设置3秒延迟)后再测试。
    修复:开启自动限速AUTOTHROTTLE_ENABLED = True,或者配置随机User-Agent中间件,模拟不同浏览器请求。

  • 响应解析逻辑误判为空
    可能第二页的响应内容结构变了(比如列表选择器从.item-list改成.goods-list),导致你的解析代码拿不到数据,误以为响应为空。
    排查:在爬虫的parse方法里打印response.text,看看第二页的响应是否真的为空,还是解析逻辑失效。
    修复:重新调整解析选择器,匹配当前页面的HTML结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:13:28