Pythonで相対パスから絶対URL(URI)を作成する

なかなか簡単に書けるもんですね。

# -*- coding: utf-8 -*-
import functools
import urlparse
import re

html_src = u"""
  <a href="searchi1.html" accesskey="1">1.検索</a><br>
  <a href="searchi2.html">2.検索</a>
  <a href="http://hogehoge/searchi3.html">3.検索</a>
"""

def atag_match(host_url,match):
    a_url = urlparse.urljoin(host_url,match.group(1))
    return u'<A href="%s" %s>' % (a_url,match.group(2))



host_url = u"http://www.erfew.com/"
p = re.compile(u'<a href=\"(.*?)\"(.*?)>',re.IGNORECASE)
html = p.sub(functools.partial(atag_match,host_url), html_src)
print html

PHPだと以下のサイトを参照

PHP相対パスから絶対URL(URI)を作成する|PHPプログラムメモ|プログラムメモ
http://logic.stepserver.jp/data/archives/501.html