在python中使用urllib3传递用户名和密码

问题描述 投票:0回答:1

我正在尝试从下一页获取html响应

https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/

当我在Chrome中打开此网址时,我必须输入用户名和该网站的帐户密码

我想在python中使用urllib3传递此用户名和密码,我当前的代码是

import urllib3

url = 'https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/'
username = ''
password = ''
data = {'Username': username, 'Password': password}

http = urllib3.PoolManager()
r = http.request('POST', url, data)
print(r.status)

print(r.data)

但是运行此命令仍会给出登录页面的响应

我不确定我是否需要使用cookie,或如何确定用户名和密码需要以哪种格式传递到url才能成功登录并采用指定的url

python urllib3
1个回答
0
投票

至少对于我来说,使用纯POST请求很难做到这一点。对于这样的项目,我将使用Selenium

pip install selenium

从此处下载Chrome驱动程序:https://sites.google.com/a/chromium.org/chromedriver/downloads

从下载的文件中,将chromedriver.exe文件复制到应用程序根目录。

这是登录https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#create an instance of webdriver
driver = webdriver.Chrome()

#navigate to URL
driver.get("https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101")

# username and password variable
username = 'my_username'
password = 'my_password'

#get the username and password fields by id and fill them
input_user = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'username')))
input_user.send_keys(username)
input_pwd = driver.find_element_by_id('password')
input_pwd.send_keys(password)
#click the login button
btn = driver.find_element_by_xpath('//input[@type="submit"]')
btn.click()
© www.soinside.com 2019 - 2024. All rights reserved.