またpythonでネットワークプログラミングする機会があったのだけど、
urllib2付近の処理が面倒です。いい加減、処理をまとめようと思って作成してみた。
複雑なことは出来ないけど、簡単なことならこれで十分。
Cookieはデフォルトで機能します。
POSTするデータは辞書のまま渡す、わざわざurlencodeしなくてもいい。
# -*- coding: utf-8 -*- # python 2.7 import urllib2 from cookielib import CookieJar from urllib import urlencode class request(): def __init__(self, debug=None): self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar())) if debug : for h in self.opener.handlers: if isinstance(h, urllib2.HTTPHandler): h._debuglevel = 1 elif isinstance(h, urllib2.HTTPSHandler): h._debuglevel = 1 def get(self, url, _headers={}): req = urllib2.Request(url, headers=_headers) return self.opener.open(req) def post(self, url, _data={}, _headers={}): req = urllib2.Request(url, data=urlencode(_data), headers=_headers) return self.opener.open(req) header = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16' } url = "https://www.hatena.ne.jp/login" r = request(debug=True) res = r.post(url, {'name':'ichirin2501', 'password':'****'}, header) print res.read()