Python需要登录才能自动化wget脚本

时间:2013-04-18 19:44:43

标签: python post cookies

我需要从需要以下内容的网站自动执行下载过程:

  • 发送包含您的用户名和密码的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')

任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:2)

您需要save your cookies

更容易使用第三方库,例如mechanizescrapy