Python 3.x系の「urllib」でHTTPクライアント

Python 3.x系では、まぎらわしいライブラリが整理され、名前変更や統合が行われました。
そして、それは「urllib」と「urllib2」にも行われたようで、これらのライブラリは「urllib」として新しく生まれ変わりました。

正直、これまでの「urllib」と使い方も変わってしまったので、ここで記しておこうかと思います。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib.request

def open(url, proxy=None):
    opener = urllib.request.build_opener()
    if proxy:
        proxy_dict = {'http':proxy}
        proxy_handler = urllib.request.ProxyHandler(proxy_dict)
        opener.add_handler(proxy_handler)
    try:
        reader = opener.open(url)
        data = reader.read()
    except Exception as e:
        print('%s' % (str(e)))
        data = None
    return data

if '__main__' == __name__:
    print(open('http://www.yahoo.co.jp/'))

後方互換性がなくなって、新たな仕様に変更されると、これまでの財産であるソースコードが使えなくなってしまうのは痛いですね。
旧バージョンのコードをメンテナンスして、新しいPython 3.x系でも使えるようにしておきましょう。