如何在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
相关产品推荐
相关产品推荐

