我正在尝试制作一个 selenium instagram 脚本。我的问题是我每次都必须登录我的帐户。
如果我使用普通的谷歌浏览器,只需登录一次就足够了。当我打开 Chrome 时,它始终保持登录状态。但 Chrome 驱动程序总是要求登录。
from selenium import webdriver
import time
import random
from selenium.webdriver.common.by import By
import kullaniciBilgileri as kb
import os.path
from pathlib import Path
from selenium.webdriver.chrome.options import Options
import collections
options = Options()
options.add_experimental_option('useAutomationExtension', False)
link = "http://www.instagram.org"
browser = webdriver.Chrome(options=options, executable_path="./chromedriver")
browser.get(url=link)
time.sleep(10)
username = browser.find_element(by=By.NAME, value=("username"))
password = browser.find_element(by=By.NAME, value=("password"))
username.send_keys(kb.userName)
password.send_keys(kb.password)
loginBtn = browser.find_element(by=By.CSS_SELECTOR, value=("#loginForm > div > div:nth-child(3) > button > div"))
loginBtn.click()
有什么建议吗?
最佳答案
访问您的 Instagram 时为避免每次登录,首次登录时使用 pickle模块您可以存储 cookies并在下次登录尝试时重复使用,如下所示:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pickle
driver.execute("get", {'url': 'http://www.instagram.org'})
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']"))).send_keys("_SelmanFarukYılmaz_")
driver.find_element(By.CSS_SELECTOR, "input[name='password']").send_keys("Selman_Faruk_Yılmaz")
driver.find_element(By.CSS_SELECTOR, "button[type='submit'] div").click()
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
driver.quit()
driver = webdriver.Chrome(service=s, options=options)
driver.execute("get", {'url': 'http://www.instagram.org'})
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
driver.execute("get", {'url': 'http://www.instagram.org'})
关于python - 如何避免每次使用 Selenium 和 Python 时都出现 Instagram 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73136877/