Я очищал 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)