我正在尝试从下一页获取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
至少对于我来说,使用纯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()