1

Cookie を使用してログインし、URL からテキスト ファイルを保存する bash スクリプトがあります。Mechanize を使用して Python で同じことを達成する必要がありますが、うまくいきません。それはたった 2 行の 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
4

2 に答える 2

1

res = br.open("https://myapp.url.com/login", data=...)代わりに試しましたmechanize.Requestか?検索を実行できると予想される場合は、作成したブラウザを使用してログインする必要があるようです。

于 2012-08-27T16:51:20.297 に答える
0

使用できますがbr.set_cookie("cookiename=cookievalue; expire=Wednesday, 13-Feb-13 15:00:00 GMT")、この方法は、Web サイトに呼び出しを行った後にのみ機能します。同じオブジェクト br を使用してさらにページを呼び出し、この Cookie が br.open() メソッドで自動的に送信されるようにします。

于 2013-02-13T05:50:36.227 に答える