我有一个bash脚本,使用cookie登录并从URL保存文本文件。我需要在使用Mechanize的Python中实现相同的功能,但我无法使其正常工作。它只有两行bash,它让我发疯。我查看了Mechanize文档,但无法找到如何做到这一点。
#!/bin/sh
base_url=https://myapp.url.com
sign_on_request="aK8Rj_mrVk3J-PDf9x6...LONG KEY...4ZPMd0w"
# Login
wget -q --keep-session-cookies --save-cookies savedcookie.txt --post-data="sign_on_request=$sign_on_request" -O - $base_url/login > /dev/null 2>&1
# Save CSV
wget -q --load-cookies savedcookie.txt -O output.txt $base_url/data
这是我试过的:
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Login
req = mechanize.Request("https://myapp.url.com/login", "sign_on_request=aK8Rj_mrVk3J-PDf9x6...LONG KEY...4ZPMd0w")
cj.add_cookie_header(req)
res = mechanize.urlopen(req)
# Download
f = br.retrieve('https://myapp.url.com/data')[0]
print f
答案 0 :(得分:1)
您是否尝试过res = br.open("https://myapp.url.com/login", data=...)
代替mechanize.Request
?似乎您需要使用您创建的浏览器进行登录,如果您希望它能够进行检索。
答案 1 :(得分:0)
您可以使用br.set_cookie("cookiename=cookievalue; expire=Wednesday, 13-Feb-13 15:00:00 GMT")
但此方法仅在您调用某个网站后才有效。使用相同的对象br来调用其他页面,以便在br.open()方法中自动发送此cookie。