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

Selenium谷歌搜索机器人 循环读取search.txt新关键词实现

需求说明

开发基于Python Selenium的谷歌搜索机器人,需满足以下要求:

  • 每次从search.txt文件中读取新的一行内容作为搜索词
  • 机器人自动访问google.com,循环执行搜索操作
  • 每轮搜索必须使用新读取的行内容作为搜索关键词,不可固定使用单一关键词
原有代码问题

原有实现存在以下缺陷,无法满足需求:

  • 读取文件后仅固定取第一行内容作为搜索词,没有逐行遍历所有搜索词的逻辑
  • 搜索框输入内容后没有触发提交动作,无法完成实际搜索
  • 每轮循环新建浏览器实例但未做资源释放,长时间运行会造成内存占用过高
  • 读取文件时未做空行过滤,容易触发空关键词的运行异常
  • 残留无意义的按冒号分割字符串逻辑,属于其他场景遗留的错误代码
修正后完整代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

def find_element_send_text(driver, location_of_the_element, type_message):
    """
    :param driver: 浏览器驱动实例
    :param location_of_the_element: 目标网页元素的XPATH路径
    :param type_message: 需要输入到元素的文本内容
    循环等待元素加载完成后,清空内容、输入目标文本并提交
    """
    while True:
        try:
            element = driver.find_element(By.XPATH, location_of_the_element)
            element.clear()
            element.send_keys(type_message)
            # 输入完成后按回车触发搜索
            element.send_keys(Keys.ENTER)
            break
        except Exception:
            pass

def load_search_keywords():
    # 读取search.txt文件,过滤空行、去除每行首尾空白字符
    with open('search.txt', 'r', encoding='utf-8') as f:
        keywords = [line.strip() for line in f.readlines() if line.strip()]
    return keywords

if __name__ == "__main__":
    keyword_list = load_search_keywords()
    search_input_xpath = "//input[@class='gLFyf gsfi']"

    # 遍历所有关键词,每轮使用新关键词执行搜索
    for keyword in keyword_list:
        print(f"正在搜索关键词:{keyword}")
        driver = webdriver.Chrome()
        try:
            driver.get("https://www.google.com/")
            driver.maximize_window()
            find_element_send_text(driver, search_input_xpath, keyword)
            # 搜索结果页停留时长可根据实际需求调整
            time.sleep(5)
        finally:
            # 确保每轮执行完成后关闭浏览器,释放资源
            driver.quit()
关键修正点
  • 重构关键词加载逻辑:读取文件时自动过滤空行、处理换行符和首尾空格,避免无效搜索,兼容中文关键词读取
  • 替换固定取首行的错误逻辑:遍历所有有效关键词列表,每轮循环自动切换新的搜索词
  • 补全搜索提交动作:引入Keys模块,输入关键词后自动按回车触发搜索
  • 优化资源管理:新增try/finally逻辑,无论搜索过程是否报错,都会在轮次结束后关闭浏览器,避免内存泄漏
  • 优化函数传参:将浏览器驱动作为参数传入元素操作函数,避免全局变量引发的跨轮次调用异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:18:41