【问题标题】:Unresolved import 'selenium' Error in PythonPython中未解决的导入“硒”错误
【发布时间】:2020-05-08 16:07:05
【问题描述】:

我想用 Python3 为 Instagram.com 创建一个自动登录。我告诉自己,我必须使用它来处理网站:

from selenium import webdriver

但在所有教程中,我发现他们对此没有任何问题,但我收到一条错误消息:

错误信息

我浏览了其他问题,发现 this one 也应该可以解决我的问题,但是 Website 和他们提出的代码并没有解决我的问题。

到目前为止我的完整代码:

from selenium import webdriver
from time import sleep

username = "username"

class InstaBot:
    def __init__(self):
        self.driver = webdriver.Chrome()
        driver.get("https://instagram.com")
        sleep(2)
        login_field =  driver.find_element_by_xpath('/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[2]/div/label/input').send_keys(username)


InstaBot()

我该如何解决这个问题?

编辑:我现在知道我必须先在命令提示符下使用该代码安装 Selenium

pip3 install selenium

我做到了,并在 YouTube 上观看了 this Tutorial 并让它像他一样,但它就是行不通。 :(

它向控制台打印一条很长的错误消息:

Traceback (most recent call last):
File "C:\Users\Jonas\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Users\Jonas\AppData\Local\Programs\Python\Python37- 
32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\Jonas\AppData\Local\Programs\Python\Python37- 
32\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht 
finden

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "main.py", line 16, in <module>
InstaBot()
File "main.py", line 8, in __init__
self.driver = webdriver.Chrome()
File "C:\Users\Jonas\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "C:\Users\Jonas\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\selenium\webdriver\common\service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' 
executable needs to be in PATH. Please see 
https://sites.google.com/a/chromium.org/chromedriver/home

【问题讨论】:

    标签: python python-3.x selenium authentication selenium-webdriver


    【解决方案1】:

    编辑回答,因为问题也被编辑:

    错误消息很清楚,您需要安装浏览器驱动程序才能将其与 Selenium 一起使用。由于您使用的是webdriver.Chrome(),因此您还需要安装 Chrome 驱动程序。 https://sites.google.com/a/chromium.org/chromedriver/downloads https://www.selenium.dev/documentation/en/webdriver/driver_requirements/

    由于 chromedriver 只是一个 zip 文件,您只需提取并配置指向此提取目录的环境变量(PATH)即可。

    如果你不想处理 PATH 环境变量,你可以在如下代码中指定 chromedriver 路径:

    self.driver = webdriver.Chrome("/path/to/chromedriver")
    

    错误消息(未解决的导入)是 VSCode 的一些 linting/codecorrection 问题,因为 selenium 模块已经导入,并且在尝试使用 chromedriver 启动 Chrome 时脚本在后面的部分失败。

    原答案:

    从您的问题看来,您当前目录中有另一个名为selenium.py 的python 文件,或者您的python 脚本的名称本身是selenium.py,或者您的脚本位于名称为selenium 的目录中。

    Python 首先在当前目录中检查导入的模块,并将当前目录中的所有其他 python 文件视为模块。所以重命名这些文件就可以解决了。

    【讨论】:

    • 唯一的文件main.py所在的文件夹,命名为:IGLogin
    • 如果你打开 python 控制台并运行from selenium import webdriver 你会得到同样的错误信息吗?
    • 没错,就是selenium模块本身安装正确,可以在Python中正确导入。由于您添加了您遇到的确切错误,因此我也更正了我的答案。
    • 我下载了 Chromedriver,但 Windows Defender 检测到它对我的 PC 有风险??!!
    • 由于 chromedriver 可用于在用户不知情的情况下运行 Chrome,Windows Defender 可能会对其进行标记。我使用的是最新版本的 Windows 10,但没有看到任何警告。由于它是从谷歌官方网站下载的,我认为没有任何理由担心。
    【解决方案2】:

    您的 IDE 无法找到您的 Selenium 包。当您运行pip show selenium 时,它会打印任何输出吗?如果是这样,请查看以Location: 开头的行。确保在 import sys; print(sys.path) 的输出中找到该位置。

    此外,我建议要么将你的类简化为一个函数,如果显示的是你要做的全部,或者如果你计划在未来添加更多逻辑,将驱动程序代码的实际执行转移到一个方法中除了构造函数。

    from selenium import webdriver
    from time import sleep
    
    class InstaBot:
        def __init__(self, username):
            self.driver = webdriver.Chrome()
            self.username = username
    
        def login(self):
            response = self.driver.get("https://instagram.com")
            sleep(2)
            response.find_element_by_xpath(
                "/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[2]/div/label/input"
                ).send_keys(self.username)
    
    
    bot = InstaBot(username="jonasx_yt")
    bot.login()
    

    【讨论】:

    • 如果我在终端中运行命令pip show selenium 几秒钟,则没有任何反应,然后显示没有输出。它什么也没做?
    【解决方案3】:

    您必须手动安装它而不是使用 pip。

    第一步:从以下链接下载包:

    Download the package

    第二步:解压

    - tar xf selenium-3.141.0.tar.gz
    
    - cd selenium-3.141.0/
    
    - ls
    
    - python3 setup.py install
    

    现在你可以开始了。

    【讨论】:

    • 如果我有 Windows 会怎样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2021-04-18
    • 2012-10-06
    • 2012-12-25
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多