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

如何用Python Selenium实现谷歌搜索结果多页面URL爬取?

爬取Google搜索结果多页URL的解决方案

现有代码的问题

你的代码存在几个关键逻辑错误,导致无法正确爬取后续页面:

  • 循环逻辑混乱:每次循环里重复执行Google搜索,而非基于当前搜索结果页翻页
  • 变量初始化问题:linkedin_urls在第一次循环时未定义就进行列表推导,会直接报错
  • 拼写错误:driver.get('https://www.gooogle.com')里的域名多了一个o,应该是google.com
  • 翻页时机错误:翻页操作的位置不对,没有在获取完当前页URL后执行

修正后的实现方案

核心思路是:先完成第一次搜索,然后在循环中依次获取当前页的目标URL,再点击"Next"翻页,直到达到指定页数或没有下一页为止。同时用显式等待替代固定sleep,提升稳定性和效率。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 初始化浏览器驱动
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

# 执行初始搜索
driver.get('https://www.google.com')
search_query = wait.until(EC.presence_of_element_located((By.NAME, 'q')))
search_query.send_keys('inurl:https://www.ama-assn.org/system/files')
search_query.send_keys(Keys.RETURN)

# 设置要爬取的页数(这里示例爬8页,对应原代码的range(0,7))
total_pages = 7
for page_num in range(total_pages):
    # 等待搜索结果加载完成,定位所有结果链接
    search_results = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.g a')))
    
    # 提取并打印目标URL(过滤掉Google自身的跳转链接,只保留实际结果URL)
    for result in search_results:
        url = result.get_attribute('href')
        # 过滤Google的中转链接,只保留包含目标域名的URL
        if 'ama-assn.org/system/files' in url:
            print(url)
    
    # 尝试点击下一页,如果没有下一页则退出循环
    try:
        next_button = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next')))
        next_button.click()
        time.sleep(1)  # 给页面加载留短暂时间
    except:
        print("已无更多页面,停止爬取")
        break

# 关闭浏览器
driver.quit()

关键优化说明

  • 使用显式等待:替代固定sleep,确保元素加载完成后再操作,避免因网络延迟导致的定位失败
  • 过滤URL:Google搜索结果的链接会有中转跳转,通过判断目标域名来提取有效URL
  • 异常处理:捕获翻页失败的情况,避免程序直接崩溃
  • 简化逻辑:去掉重复搜索的冗余操作,基于初始搜索结果直接翻页

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:20:58