Вход в Instagram Python - PullRequest
       57

Вход в Instagram Python

0 голосов
/ 16 июня 2020

Я очищал Instagram (количество подписчиков различных пользователей) с помощью BeautifulSoup в течение последних нескольких месяцев без проблем, но недавно скрипт перестал работать - предполагая, что это связано с тем, что мне нужно войти в систему, чтобы просмотреть профиль. Я нашел этот код для входа в Instagram с использованием селена, но продолжаю получать исключение тайм-аута (см. Ниже).

Я новичок в селене, но похоже, что скрипт не может найти вводимые имя пользователя и пароль в окне

import itertools

from explicit import waiter, XPATH
from selenium import webdriver

driver = webdriver.Chrome()

username = "username"  # <username here>
password = "password"  # <password here>

# Load page
driver.get("https://www.instagram.com/accounts/login/")

# Login
waiter.find_write(driver, "//div/input[@name='username']", username, by=XPATH)
waiter.find_write(driver, "//div/input[@name='password']", password, by=XPATH)
waiter.find_element(driver, "//div/button[@type='submit']", by=XPATH).click()

TimeoutException                          Traceback (most recent call last)
<ipython-input-37-87d2d45e9b7f> in <module>
     11 
     12 # Login
---> 13 waiter.find_write(driver, "//div/input[@name='username']", username, by=XPATH)
     14 waiter.find_write(driver, "//div/input[@name='password']", password, by=XPATH)
     15 waiter.find_element(driver, "//div/button[@type='submit']", by=XPATH).click()

~\AppData\Local\Continuum\anaconda3\lib\site-packages\explicit\waiter.py in find_write(driver, elem_path, write_str, clear_first, send_enter, by, timeout, poll_frequency)
    133     """
    134     elem = find_element(driver, elem_path=elem_path, by=by, timeout=timeout,
--> 135                         poll_frequency=poll_frequency)
    136 
    137     if clear_first:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\explicit\waiter.py in find_element(driver, elem_path, by, timeout, poll_frequency)
     39     """
     40     wait = WebDriverWait(driver, timeout, poll_frequency)
---> 41     return wait.until(EC.presence_of_element_located((by, elem_path)))
     42 
     43 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\support\wait.py in until(self, method, message)
     78             if time.time() > end_time:
     79                 break
---> 80         raise TimeoutException(message, screen, stacktrace)
     81 
     82     def until_not(self, method, message=''):

TimeoutException: Message: 

У меня также есть попытался использовать вариант кода с помощью драйвера (вместо официанта), и показано исключение ниже

driver.find_element_by_name('username').send_keys('username')
driver.find_element_by_name('password').send_keys('password') 

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="username"]"}
  (Session info: chrome=83.0.4103.61)

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Попробуйте без элемента div, он должен работать.

waiter.find_write(driver, "//input[@name='username']", username, by=XPATH)
waiter.find_write(driver, "//input[@name='password']", password, by=XPATH)

или

username = driver.find_element_by_xpath("//input[@name='username']")
password = driver.find_element_by_xpath("//input[@name='password']")
0 голосов
/ 16 июня 2020

Вы можете найти элементы, используя HTML имена классов:

email_box = driver.find_element_by_class_name('f0n8F')
email_box.send_keys('Your email address')
...