PythonでHTTPクライアント(Cookie保持)

| | コメント(0) | トラックバック(0)

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なんかにはログインする事ができたが
私がログインしたいサイトではセッション切れを起こす。。

便利すぎて挙動が分からないので
別な方法を考えてみる。

トラックバック(0)

このブログ記事を参照しているブログ一覧: PythonでHTTPクライアント(Cookie保持)

このブログ記事に対するトラックバックURL: http://mt.blog-slime.com/mt-tb.cgi/4

コメントする

このブログ記事について

このページは、adminが2007年7月25日 18:49に書いたブログ記事です。

ひとつ前のブログ記事は「cookieの利用」です。

次のブログ記事は「cookielibでCookieが保持できずログインできない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。