cookielibというモジュールを使うと良いらしいが
同梱されるのは、python2.4からだそうだ。
日本Pythonユーザ会から最新版をダウンロードし、アップデートしてみた。
いちいちパスを通しなおすのが面倒なので
インストール先はC:\Python
現時点では、日本語環境対応版が無いようだ。と思ったが
2.4以降くらいから標準で日本語にも対応しているらしい。
ちなみにリダイレクト(Location:)は、勝手にやってしまうみたいなので注意。
やり方的には、次の通りで一応できた。
# -*- coding: utf-8 -*-import urllib, urllib2, cookielib
url = 'http://www.amazon.co.jp/s/'
postdata = {}
postdata['__mk_ja_JP'] = 'カタカナ'
postdata['initialSearch'] = 1
postdata['url'] = 'search-alias'
postdata['field-keywords'] = 'python'
postdata['Go'] = 'Go'params = urllib.urlencode(postdata)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# UserAgent を設定
opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]
r = opener.open(url, params)
print r.geturl()
print r.read()
r.close()
urllib.urlencode で、POST時のパラメタをURLエンコード
cookielib.CookieJar()で、生成したcjをHTTPCookieProcessorに渡し
urllib2のbuild_openerでHTTPクライアントを作るみたいな感じかな。
openerが、PerlでいうUserAgentの役割になるようだ。
あとは、それを使いリクエストするだけ。
mixiなんかにはログインする事ができたが
私がログインしたいサイトではセッション切れを起こす。。
便利すぎて挙動が分からないので
別な方法を考えてみる。

コメントする