Selenium报错:module 'selenium.webdriver'无'get'属性,求解决
解决Selenium中
AttributeError: module 'selenium.webdriver' has no attribute 'get'问题 我遇到了AttributeError错误:module 'selenium.webdriver' has no attribute 'get'。尝试过在Stack Overflow查找解决方案,但出现了新的无法理解的问题;卸载重装过Python(电脑已安装Anaconda),并分别在IDLE、VSCode和PyCharm中运行Selenium程序,问题依旧存在。
以下是我的代码:
from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager import random from selenium.webdriver.common.by import By url = "https://eksisozluk.com/mustafa-kemal-ataturk--34712?p=" pageCount = 1 entries = [] entryCount = 1 while pageCount <= 10: randomPage = random.randint(1,1290) newUrl = url + str(randomPage) webdriver.get(newUrl) elements = driver.find_element(By.CSS_SELECTOR, 'p.content') for element in elements: entries.append(element.text) time.sleep(3) pageCount += 1 with open("entries.txt","w",encoding = "UTF-8") as file: for entry in entries: file.write(str(entryCount) + ".\n" + entry + "\n") file.write("***********************************\n") entryCount += 1 driver.close()
问题根源
代码存在三个核心错误:
- 调用对象错误:
webdriver.get(newUrl)直接调用了模块的get方法,但get是浏览器驱动实例的方法,不是selenium.webdriver模块的方法。 - 未初始化驱动实例:直接使用
driver.find_element和driver.close(),但从未创建过driver实例。 - 元素获取方法错误:
find_element只会返回单个匹配元素,遍历会报错,应该用find_elements获取多个元素;同时缺少time模块导入,time.sleep会未定义。
修正后的代码
from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager import random import time # 导入time模块 from selenium.webdriver.common.by import By url = "https://eksisozluk.com/mustafa-kemal-ataturk--34712?p=" pageCount = 1 entries = [] entryCount = 1 # 初始化Firefox驱动实例 driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install())) while pageCount <= 10: randomPage = random.randint(1,1290) newUrl = url + str(randomPage) driver.get(newUrl) # 通过驱动实例调用get方法 # 使用find_elements获取所有匹配元素 elements = driver.find_elements(By.CSS_SELECTOR, 'p.content') for element in elements: entries.append(element.text) time.sleep(3) pageCount += 1 with open("entries.txt","w",encoding = "UTF-8") as file: for entry in entries: file.write(str(entryCount) + ".\n" + entry + "\n") file.write("***********************************\n") entryCount += 1 driver.close()
关键修改说明
- 新增
import time:解决time.sleep未定义问题。 - 初始化驱动实例:通过
webdriver_manager自动安装并启动GeckoDriver,创建浏览器实例driver。 - 调整
get调用对象:从webdriver.get改为driver.get,调用实例方法而非模块方法。 - 替换元素获取方法:
find_element改为find_elements,确保能获取页面上所有符合条件的元素并遍历。
内容的提问来源于stack exchange,提问作者spark
相关产品推荐
相关产品推荐

