首页 > 解决方案 > Python Selenium,如何存储登录会话以在身份验证后抓取站点

问题描述

我在使用 Selenium 存储我的登录会话以抓取身份验证后的站点时遇到问题。我正在尝试使用 cookie,因为我读到的是几乎所有网站都使用 cookie。这是我所做的:

driver = Firefox()


def logon(drvr):
    drvr.get('https://www.site/to/scrape/logon')
    wait = WebDriverWait(drvr, 10)
    elem = wait.until(EC.presence_of_element_located((By.NAME, 'memberId')))
    elem.send_keys('xxxx', Keys.RETURN)
    elem = wait.until(EC.presence_of_element_located((By.NAME, 'password')))
    elem.send_keys('xxxx', Keys.RETURN)
    elem = wait.until(EC.presence_of_element_located((By.XPATH, '//a[@class='
        '"sub-label font-narrow"]')))
    ver = elem.get_attribute('aria-label')
    if ' '.join(ver.split()) == 'phone number ending in 1 3 6 1':
        elem.click()
    value = input('Enter security code: ')
    elem = wait.until(EC.presence_of_element_located((By.NAME, 'inputValue')))
    elem.send_keys(value, Keys.RETURN)


def main(drvr):
    cookies = drvr.get_cookies()
    print(cookies)
    for cookie in cookies:
        drvr.add_cookie(cookie)
    drvr.get('https://www.site/behind/logon')


logon(driver)
main(driver)

我可以成功登录,但是上面的代码将我踢回了登录页面。Selenium 不存储会话。我做错了什么吗?如果站点使用另一种存储会话的方法,我怎样才能找到它?我读到的是大多数网站都使用cookies。

标签: python-3.xselenium

解决方案


推荐阅读