我需要从需要以下内容的站点自动执行下载过程:
- 发送包含您的用户名和密码的 HTTP POST 请求
- 我应该得到一个 cookie (可能包含一个会话 ID)
- 发送文件的 HTTP GET 请求,在 HTTP 标头中发送我的 cookie 详细信息
现在使用 wget,我必须首先使用密码登录(打开会话?):
wget --no-check-certificate -O /dev/null --save-cookies auth.rda_ucar_edu --post-data=email=name@domain.edu&passwd=5555&action=login https://rda.ucar.edu/cgi-bin/login
然后,我检索我需要的文件:
wget --no-check-certificate -N --load-cookies auth.rda_ucar_edu http://rda.ucar.edu/data/ds608.0/3HRLY/1979/NARRflx_197901_0916.tar
在 Python 中有没有很好的方法来做到这一点?我已经尝试了很多方法,但没有得到这个工作。以下 python 代码似乎让我正确登录。但是,我认为我需要在下载数据时保持会话处于活动状态?
url = 'https://rda.ucar.edu/cgi-bin/login'
values = {'email': 'name@domain.edu', 'password': '5555', 'action': 'login'}
data = urllib.urlencode(values)
binary_data = data.encode('ascii')
req = urllib2.Request(url, binary_data)
response = urllib2.urlopen(req)
print response.read()
也试过这个:
from requests import session
with session() as c:
c.post(url, values)
request = c.get('http://rda.ucar.edu/data/ds608.0/3HRLY/1979/NARRflx_197901_0108.tar')
任何建议都会有所帮助。