python-3.x - 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。
解决方案
推荐阅读
- azure - 无法在 MS Azure 中的深度学习虚拟机 (DLVM) 上启动 jupyter notebook
- typescript - 如何调试诸如此类的节点模块错误?
- accelerometer - 加速度计读数
- hyperledger-fabric - Hyperledger Indy 中 Hyperledger Fabric 组件的可重用性
- html - CSS下拉Div动画?
- powershell - Powershell - 如果 <2 则删除 AD 联系人
- sql - 在数据库 MVC5 中保存多张图片
- php - Mysql Laravel 复杂查询以求和项目数量
- oracle - 在 sqlplus 中处理未找到的异常
- r - 解析R中数据框列中的json数据