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

如何在Python Selenium中切换谷歌搜索分页,获取多页结果URL?

实现谷歌搜索分页获取URL的解决方案

嘿,我来帮你搞定分页获取的问题!你的现有代码有几个小细节问题(比如重复初始化driver、变量名不匹配),我先帮你修正,再加上分页逻辑,这样就能稳定获取第1、2、3页的所有结果啦。

两种实用的分页实现思路

思路1:直接构造带分页参数的URL(推荐)

谷歌搜索的分页可以通过URL里的start参数精准控制:第1页对应start=0(默认无需手动加),第2页是start=10,第3页是start=20,以此类推(每页默认展示10条结果)。这种方式比模拟点击按钮更稳定,不会遇到按钮加载延迟、定位失败的问题。

思路2:模拟点击“下一页”按钮

如果你更倾向于还原真实用户操作,可以定位页面底部的“下一页”按钮并点击,但需要额外处理按钮不存在的情况(比如搜索结果不足3页时)。

下面我会给出思路1的完整代码,因为它的可靠性更高。

修改后的完整可运行代码

import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from bs4 import BeautifulSoup

# 初始化浏览器配置
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options, executable_path="c:\\...\\geckodriver.exe")

# 配置搜索关键词和要获取的页数
search_keyword = "restaurant in hamburg"
total_pages = 3

try:
    for page in range(total_pages):
        # 构造对应页数的搜索URL:第1页start=0,第2页start=10,第3页start=20
        start_param = page * 10
        search_url = f"https://www.google.de/search?q={search_keyword}&start={start_param}"
        driver.get(search_url)
        # 等待页面加载完成(可根据网络情况调整时长)
        time.sleep(2)
        
        # 解析页面提取结果链接
        soup = BeautifulSoup(driver.page_source, "lxml")
        results = soup.find_all("div", class_="rc")
        
        print(f"\n=== 第 {page+1} 页搜索结果 ===")
        for result in results:
            link = result.find("a", href=True)
            if link:
                print(link.get('href'))

finally:
    # 确保无论成功失败,浏览器都会被关闭,避免资源泄漏
    driver.quit()

关键修改点说明

  • 移除重复的driver初始化:原代码里第二次初始化driver会覆盖之前的实例,导致丢失页面状态,我直接删掉了这部分冗余代码。
  • 变量名统一修正:原代码里ergebnisse和results变量名不匹配,现在统一为results避免报错。
  • 分页参数逻辑:通过start参数直接生成每一页的搜索URL,跳过了模拟点击的不稳定环节。
  • 异常安全处理:用try...finally包裹核心逻辑,确保浏览器一定会被关闭,防止进程残留。

如果你需要模拟点击“下一页”的版本,随时告诉我,我再给你补充对应的代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:02:45