python + selenium 模拟 google 搜索的控制台应用程序
Console app with python + selenium simulate google search
我尝试编写一个模拟 Google 搜索的控制台应用程序。但琐碎的甚至我不能 运行 几乎是空代码,只是因为 webdriver 导入控制台立即关闭
# -*- 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()
谢谢!
您的代码有几个问题。
以下几行:
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
我尝试编写一个模拟 Google 搜索的控制台应用程序。但琐碎的甚至我不能 运行 几乎是空代码,只是因为 webdriver 导入控制台立即关闭
# -*- 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()
谢谢!
您的代码有几个问题。
以下几行:
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