Scrapy爬虫已获取下一页URL但无法跳转翻页问题求助
Scrapy olx平台爬虫翻页失败排查解决方法
优先级最高的修复点
- 修正
allowed_domains配置:你当前配置为['https://sp.olx.com.br'],Scrapy的域名校验规则要求仅填写域名、不能带协议前缀,带https://的配置会被判定为非法域名,直接过滤所有翻页请求,这是最可能的故障原因。正确配置如下:allowed_domains = ['sp.olx.com.br'] - 临时注释
CLOSESPIDER_ITEMCOUNT配置测试:你设置了爬满30条就自动关闭爬虫,如果第一页爬取的条目数已经达到阈值,爬虫会直接终止不会执行翻页逻辑,可先注释该配置验证翻页功能是否正常。
翻页逻辑优化
你当前使用的绝对路径Xpath选择器稳定性极低,页面DOM结构稍有变动就会失效,建议替换为通用的文本匹配选择器:
# 适配olx葡萄牙语站点的下一页按钮文本 next_page_url = response.xpath("//a[contains(text(), 'Próxima página')]/@href").get()
同时在构造翻页请求时,显式指定callback为parse方法,避免Scrapy默认回调异常:
if next_page_url: yield scrapy.Request(response.urljoin(next_page_url), callback=self.parse)
如果仍出现请求被丢弃的情况,可临时加dont_filter=True参数测试是否是去重规则导致的问题:
yield scrapy.Request(response.urljoin(next_page_url), callback=self.parse, dont_filter=True)
注意:正常运行时不要长期保留dont_filter参数,避免陷入死循环爬取重复页面
日志排查手段
如果以上修改后仍无法正常翻页,可开启调试日志定位问题:
- 运行爬虫时添加
-L DEBUG参数启动调试模式,搜索下一页对应的URL,查看是否有Filtered offsite request(域名校验拦截)、Ignoring duplicate request(重复请求拦截)之类的日志提示,即可精准定位故障原因。 - 可在翻页逻辑前添加打印代码
print("拼接后的下一页链接:", response.urljoin(next_page_url)),确认链接格式是否正确,是否存在双斜杠、协议缺失等格式错误。
内容的提问来源于stack exchange,提问作者RACHEL
相关产品推荐
相关产品推荐

