PythonSelenium搜索和点击示例代码

Written by

in

文章目录
  • 目录
    • Python Selenium 搜索和点击
      • 🔧 1. 环境准备
      • 🔍 2. 执行 Google 搜索
      • 🖱️ 3. 定位并点击搜索结果
      • ⚠️ 4. 处理特殊情况
      • 🛠️ 5. 完整代码示例
      • 📌 6. 关键注意事项

    • 安装依赖

    安装 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()  # 最大化窗口避免元素遮挡

    输入关键词并提交
    定位 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)  # 回车提交搜索

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

    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()

    元素不可点击时
    若普通点击失效(如元素被遮挡),用 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"])]')

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

    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()

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

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

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

    您可能感兴趣的文章:

    • Python使用Selenium自动进行百度搜索的实现
    • python+selenium实现自动化百度搜索关键词
    • Python使用Selenium+BeautifulSoup爬取淘宝搜索页
    • python+Selenium自动化测试——输入,点击操作
    • python+selenium 点击单选框-radio的实现方法
    • Python+selenium点击网页上指定坐标的实例
    • python+selenium 定位到元素,无法点击的解决方法
    • python+selenium实现登录账户后自动点击的示例

    站内搜索