Python Selenium 搜索和点击示例代码

 更新时间:2025年06月24日 11:48:48   作者:Humbunklung  
使用Python Selenium实现Google搜索与点击,需安装库及浏览器驱动,通过显式等待确保结果加载,支持精准/随机点击,处理元素遮挡及广告过滤,本文给大家介绍Python Selenium 搜索和点击,感兴趣的朋友一起看看吧

Python Selenium 搜索和点击

🔧 1. 环境准备

  • 安装依赖

安装 Selenium 库并配置浏览器驱动(以 Chrome 为例):

uv add selenium webdriver-manager  # 自动管理驱动版本
  • 初始化浏览器

使用 webdriver-manager 自动处理驱动路径问题:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()  # 最大化窗口避免元素遮挡

🔍 2. 执行 Google 搜索

输入关键词并提交
定位 Google 搜索框并模拟回车键提交搜索:

from selenium.webdriver.common.keys import Keys
driver.get("https://www.google.com")
search_box = driver.find_element("name", "q")  # 通过 name 定位搜索框
search_box.send_keys("Python 自动化测试")
search_box.send_keys(Keys.RETURN)  # 回车提交搜索

🖱️ 3. 定位并点击搜索结果

等待结果加载
使用显式等待确保结果加载完成,避免因网络延迟失败:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 等待结果区域出现(最长10秒)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "div.g"))
)
  • 点击指定结果

方案1:点击特定位置结果(如第一条)

first_result = driver.find_element(By.CSS_SELECTOR, "div.g a")  # 定位第一条结果的链接
first_result.click()

方案2:随机点击一个结果

from random import choice
all_results = driver.find_elements(By.CSS_SELECTOR, "div.g a")  # 获取所有结果链接
random_result = choice(all_results)  # 随机选择一个
random_result.click()

⚠️ 4. 处理特殊情况

元素不可点击时
若普通点击失效(如元素被遮挡),用 JavaScript 强制执行点击:

driver.execute_script("arguments[0].click();", random_result)

过滤广告链接
通过选择器排除广告区域(通常包含 class="ads" 的元素):

valid_results = driver.find_elements(By.XPATH, '//div[@class="g"]/a[not(ancestor::div[@class="ads"])]')

🛠️ 5. 完整代码示例

实际上,检索的代码会发生变化,需要我们如实调整,实测有效的代码如下:

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
from webdriver_manager.chrome import ChromeDriverManager
from random import choice
options = webdriver.ChromeOptions()
# 绕过人机检测
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
# 搜索关键词
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium 教程")
search_box.send_keys(Keys.RETURN)
# 等待结果加载
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "div.b8lM7"))
)
results = driver.find_elements(By.CSS_SELECTOR, "a h3")
if results:
    target = choice(results)
    target.click()  # 或 driver.execute_script("arguments[0].click();", target)
else:
    print("未找到有效结果")
# 后续操作(如数据提取)
print("当前页面标题:", driver.title)
# 关闭浏览器
driver.quit()

📌 6. 关键注意事项

  1. 反爬虫机制:Google 会检测自动化行为,需控制频率(如添加 time.sleep(2)),避免 IP 被封。
  2. 元素定位更新:Google 页面结构可能变化,若 CSS 选择器失效需调整(如改用 XPath)。
  3. 浏览器兼容性:若使用 Firefox 或 Edge,需替换为对应驱动(如 GeckoDriverManager)。

此方案覆盖了从环境配置到动态交互的全流程,适用于自动化测试或数据采集场景。实际使用时建议结合异常处理(如 try/except)增强稳定性。

到此这篇关于Python Selenium 搜索和点击示例代码的文章就介绍到这了,更多相关Python Selenium搜索和点击内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • numpy数组做图片拼接的实现(concatenate、vstack、hstack)

    numpy数组做图片拼接的实现(concatenate、vstack、hstack)

    这篇文章主要介绍了numpy数组做图片拼接的实现(concatenate、vstack、hstack),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 详解python中GPU版本的opencv常用方法介绍

    详解python中GPU版本的opencv常用方法介绍

    这篇文章主要介绍了详解python中GPU版本的opencv常用方法介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 获取Django项目的全部url方法详解

    获取Django项目的全部url方法详解

    这篇文章主要介绍了获取Django项目的全部url方法详解,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • python中通过selenium简单操作及元素定位知识点总结

    python中通过selenium简单操作及元素定位知识点总结

    在本篇文章里小编给大家整理的是关于python中通过selenium简单操作及元素定位的知识点,有需要的朋友们可以学习下。
    2019-09-09
  • 使用python实现下载我们想听的歌曲,速度超快

    使用python实现下载我们想听的歌曲,速度超快

    这篇文章主要介绍了使用python实现下载我们想听的歌曲,速度超快,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 20个解决日常编程问题的Python代码分享

    20个解决日常编程问题的Python代码分享

    在这篇文章中,主要和大家分享了20个Python代码片段,以帮助你应对日常编程挑战。文中的示例代码讲解详细,感兴趣的小伙伴可以跟上小编一起了解一下
    2023-01-01
  • Python+Yolov5人脸口罩识别的详细步骤

    Python+Yolov5人脸口罩识别的详细步骤

    人脸口罩佩戴检测(识别)是当前急需的应用,而YOLOv5是目前流行的强悍的目标检测技术,下面这篇文章主要给大家介绍了关于Python+Yolov5人脸口罩识别的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python装饰器超详细实例教程

    Python装饰器超详细实例教程

    本文介绍了Python装饰器的基本概念、用途和实现方法,装饰器是一种在不修改原函数代码的前提下,为函数动态添加功能的工具,其本质是闭包和高阶函数,装饰器可用于日志记录、计时、权限校验等功能,感兴趣的朋友跟随小编一起看看吧
    2026-05-05
  • Python中的asyncio代码详解

    Python中的asyncio代码详解

    asyncio 是用来编写 并发 代码的库,使用 async/await 语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。这篇文章主要介绍了Python中的asyncio,需要的朋友可以参考下
    2019-06-06
  • 一波神奇的Python语句、函数与方法的使用技巧总结

    一波神奇的Python语句、函数与方法的使用技巧总结

    这篇文章主要介绍了一波神奇的Python函数与方法的使用技巧总结,包括装饰器和with语句等的不常见用法,需要的朋友可以参考下
    2015-12-12

最新评论