【问题标题】:Console app with python + selenium simulate google search带有 python + selenium 的控制台应用程序模拟谷歌搜索
【发布时间】:2026-01-22 03:20:25
【问题描述】:

我尝试编写一个模拟 Google 搜索的控制台应用程序。但微不足道,即使我无法运行几乎空的代码,只是因为 webdriver import 控制台立即关闭

# -*- coding: utf-8 -*-


import os

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


def greeting():
    os.system('cls' if os.name == 'nt' else 'clear')
    print('Hello')


def search():
    greeting()
    q = ''

    while q != 'quit':
        q = input()
        q = q.replace(' ', '')
        browser = webdriver.Firefox()
        body = browser.find_elements_by_tag_name("body")
        body.send_keys(Keys.CONTROL + 't')
        counter = 0
        for i in range(0, 20):
            browser.get("https://www.google.com/search?q=" + q + "&start=" + str(counter))
            body = browser.find_element_by_tag_name("body")
            print(body)
            counter += 10
            browser.quit()
        print(q)


if __name__ == '__main__':
    search()

谢谢!

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver google-search


    【解决方案1】:

    您的代码存在一些问题。

    以下几行:

    body = browser.find_elements_by_tag_name("body")
    body.send_keys(Keys.CONTROL + 't')
    

    将不起作用,因为您正在获取元素列表(请注意 find_elements 末尾的 s)并且 send_keys 仅适用于单个元素,send_keys 也仅适用于单个元素适用于可见元素,因此您不能使用 body 标签。

    如果我注释掉有问题的行,我可以运行您的代码,但由于您在 for 循环中调用 browser.quit(),它将在第一次迭代后停止工作。

    删除后,一切正常:

    for i in range(0, 20):
        browser.get("https://www.google.com/search?q=" + q + "&start=" + str(counter))
        body = browser.find_element_by_tag_name("body")
        print(body)
        counter+=10
    

    【讨论】: