Instagram 登录 Python
Instagram Login in Python
在过去的几个月里,我一直在使用 BeautifulSoup 抓取 Instagram(各种用户的关注者数量),没有任何问题,但最近该脚本停止工作 - 假设是因为我需要登录才能查看配置文件。我发现这段代码使用 selenium 登录 Instagram,但我一直收到超时异常(包括在下面)。
我对 selenium 很陌生,但脚本似乎无法在 window
中找到用户名和密码输入
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)
您可以使用 HTML class 名称查找元素:
email_box = driver.find_element_by_class_name('f0n8F')
email_box.send_keys('Your email address')
在没有 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']")
在过去的几个月里,我一直在使用 BeautifulSoup 抓取 Instagram(各种用户的关注者数量),没有任何问题,但最近该脚本停止工作 - 假设是因为我需要登录才能查看配置文件。我发现这段代码使用 selenium 登录 Instagram,但我一直收到超时异常(包括在下面)。
我对 selenium 很陌生,但脚本似乎无法在 window
中找到用户名和密码输入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)
您可以使用 HTML class 名称查找元素:
email_box = driver.find_element_by_class_name('f0n8F')
email_box.send_keys('Your email address')
在没有 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']")