Pythonでスクレイピング

佐川急便とヤマト運輸の配送状況の最新ステータスが欲しくてスクレイピングするスクリプトをPythonで書いてみました。
HTMLパーサにはBeautifulSoupを使ってます。

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

import re
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

def sagawa_check(n):
    r = re.compile(r"&#([^;]*);")
    url = "http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do"
    data = urllib.urlencode({"okurijoNo": n})
    html = urllib2.urlopen(url, data).read().decode('shift_jis').encode('utf-8')
    soup = BeautifulSoup(html)
    s = soup.findAll("td", {
        "class": "ichiran-fg2 ichiran-fg-src-1 ichiran-table",
        "width": "38%"})[0]
    return ''.join([unichr(int(x)).encode('utf-8') for x in r.findall(s.string)])

def kuroneko_check(n):
    r = re.compile(r'>([^<]+)<br')
    url = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko"
    data = urllib.urlencode({"number00": "1", "number01": n})
    html = urllib2.urlopen(url, data).read().decode('shift_jis').encode('utf-8')
    soup = BeautifulSoup(html)
    s = str(soup.findAll("td", {"class": "ct"})[0].font)
    return r.findall(s)[0]

print(sagawa_check('xxxx-xxxx-xxxx'))
print(kuroneko_check('xxxx-xxxx-xxxx'))