使用 Selenium 登录网站,但继续(登录时)处理请求

时间:2021-03-12 12:02:40

标签: python selenium-webdriver web-scraping python-requests

我在网站上使用 Selenium 和 Chrome 网络驱动程序登录我的帐户,但在登录后,我想使用其他库(例如 requests)与网站进行交互。

我正在使用 Selenium 来尝试绕过 reCAPTCHA v3,但我想使用 requestsbeautifulsoup 库来抓取登录页面之后的 URL 中的数据(登录的 URL登录后页面重定向到)。

这是我为登录而编写的代码,以及底部的一小段代码,我计划用于在登录后抓取网站。

import requests
import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains

chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome("chromedriver", options=chrome_options)
action = ActionChains(driver)

url_1 = "https://ais.usvisa-info.com/en-am/niv/users/sign_in"
url_2 = "https://ais.usvisa-info.com/en-am/niv/account/settings/update_email"
email = "email"
password = 'password'
Headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
}


def login():

    driver.get(url_1)
    
    driver.find_element_by_id("user_email").send_keys(email)
    driver.find_element_by_id("user_password").send_keys(password)
    
    driver.find_elements_by_class_name("icheckbox")[0].click()
    driver.find_elements_by_name("commit")[0].click()
    time.sleep(1)
    print(driver.current_url)

login()
test = requests.get(url, headers=Headers)   

1 个答案:

答案 0 :(得分:3)

登录实际上所做的是修改您的 cookie 以添加一个密钥,这将验证您是否已登录。我们可以对这些信息做的是获取 cookie 数据并将其重用于 Python requests模块。让我们从像这样从 webdriver 中提取 cookie 开始:

driver_cookies = driver.get_cookies()

现在您有了 cookie,您可以将它们注入到 cookies 参数中的未来请求中,如下所示:

test = requests.get(url, headers=Headers, cookies=driver_cookies)