Неразрешенная ошибка импорта 'selenium' в Python - PullRequest
1 голос
/ 08 мая 2020

Стоп! Прежде чем вы подумаете, что я не проинформировал себя о своей проблеме: я делаю это, и я просто не нашел решения. И нет, это не скопированный вопрос. Я знаю, что есть еще вопросы по той же проблеме. Хорошо, теперь я начинаю.

Я хочу создать автоматический вход для Instagram.com с Python3. (Я пробовал это в VBScript и потерпел неудачу). Я сообщил себе, что мне нужно использовать это для работы с веб-сайтами:

from selenium import webdriver

Но во ВСЕХ руководствах я обнаружил, что у них не было никаких проблем с этим, но я получил Errormassege:

enter image description here Сообщение об ошибке

Я просмотрел другие вопросы и нашел этот , который должен решить мой вопрос, но Веб-сайт и предлагаемый ими Кодекс не решили мою проблему.

Мой полный код на данный момент:

from selenium import webdriver
from time import sleep

username = "jonasx_yt"

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 и сделал его похожим на него, но это просто не так работай. : (

На консоль выводится очень длинное сообщение об ошибке:

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

Ответы [ 3 ]

2 голосов
/ 08 мая 2020

Отредактируйте, чтобы ответить, так как вопрос также редактируется:

Сообщение об ошибке ясно, что вам необходимо установить драйвер браузера, чтобы использовать его с 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, поскольку модуль селена уже импортирован, а скрипт не работает на более поздних этапах при попытке запустить Chrome с использованием chromedriver.

исходный ответ:

Из вашей проблемы кажется, что у вас есть другой python файл с именем selenium.py в вашем текущем каталоге или именем вашего python скрипта является сам selenium.py, или ваши скрипты находятся в каталоге с именем selenium.

Python проверяет текущий каталог сначала для импортированного модуля, и он обрабатывает все остальные файлы python в текущем каталоге как модули. Так что переименуйте эти файлы, это будет решено.

1 голос
/ 23 мая 2020

Вам необходимо установить его вручную вместо использования pip.

Step1: Загрузите пакет по следующей ссылке:

Загрузите пакет

Шаг 2: Распакуйте

- tar xf selenium-3.141.0.tar.gz

- cd selenium-3.141.0/

- ls

- python3 setup.py install

Теперь вам хорошо go.

1 голос
/ 08 мая 2020

Ваша IDE не может найти ваш пакет Selenium. Когда вы запускаете pip show selenium, выводится ли он? Если это так, посмотрите на строку, начинающуюся с Location:. Убедитесь, что местоположение найдено в выходных данных import sys; print(sys.path).

Кроме того, я бы предложил либо упростить ваш класс до одной функции, если то, что показано, это все, что вы будете делать, или если вы планируете добавить больше logi c в будущем, переводя фактическое выполнение кода драйвера в метод, отличный от конструктора.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...