You need to enable JavaScript to run this app. Python Selenium爬虫下一页导航逻辑的正确插入位置
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium爬虫下一页导航逻辑的正确插入位置

多页爬取的正确逻辑插入方案

之前尝试失效的核心原因

你将下一页点击逻辑放入单条住宿详情爬取的for循环中无法生效,本质是运行上下文不匹配:

  • 现有scrape_results函数中,遍历单条URL的循环运行时,driver已经切换到对应酒店的详情页面,不存在结果列表页的分页按钮元素,自然无法触发跳转操作。
  • 分页操作必须停留在搜索结果列表页的上下文执行,不能穿插在详情爬取的流程中间。

匹配现有代码结构的正确插入位置

可直接沿用你原本「先批量收集全量目标URL、再逐个爬取详情」的执行逻辑,不需要打乱原有代码的分层结构,具体修改如下:

  1. 在scrape_results函数初始化阶段新增两个核心变量:
    • 存储所有已收集URL的空累计列表
    • 目标爬取数阈值(即传入函数的n_results参数值)
  2. 将原本的单页URL收集流程替换为可循环的分页收集流程,插入点位于当前页URL提取完成后、启动详情爬取for循环之前,执行顺序为:
    • 循环启动后,通过sr-hotel__title、hotel_name_link选择器提取当前结果页的所有酒店URL,追加到累计URL列表中
    • 实时校验累计URL数量:如果已经达到设定的n_results阈值,立刻终止循环,不再执行翻页操作
    • 如果未达到阈值,执行下一页跳转逻辑:先检查paging-next类名对应的按钮是否为可点击状态(规避最后一页按钮禁用的报错场景),确认可点击后执行点击操作
    • 点击后添加显式等待逻辑,直到新一页的结果标题元素加载完成,再回到循环开头提取新页面的URL
  3. 等所有分页、URL收集的循环完全结束,再运行你原本的「遍历累计URL列表、逐个调用scrape_accommodation_data爬取详情数据」的原有逻辑,这部分代码无需做任何修改。

关键避坑要点

  • 不要在收集完当前页URL后立刻启动详情爬取,否则driver会被切换到详情页上下文,后续再想返回结果列表页翻页,需要额外添加返回跳转逻辑,大幅提升程序崩溃概率。
  • 翻页后不要立刻提取URL,必须等待新页面的结果元素加载完成,否则会因为页面渲染慢,提取到空值、旧页面的重复URL。

内容的提问来源于stack exchange,提问作者Julián Venhuizen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 23:15:04