ClientForm を使用した HTML parsing

呼称 : HTML form の操作
目的 : HTML form への入力や実行を扱う
用例 : tinyurl.com から短縮 URL を取得する
備考 : ClientForm が必要

ちょうど良いお題が LL Golf Hole 1 にありました(^ ^;;

http://ja.doukaku.org/192/
#!/bin/env python

import re
from urllib2 import urlopen
from ClientForm import ParseResponse
from htmllib import HTMLParser
from formatter import NullFormatter

response = urlopen('http://tinyurl.com/')
form = ParseResponse(response,False)[1]
form['url'] = 'http://ll.jus.or.jp/2008/info/xgihyo'

h = HTMLParser(NullFormatter())
h.feed(urlopen(form.click()).read())
h.close

r = re.compile(r'http://tinyurl.com/\w+')
for i in h.anchorlist:
    if r.match(i):
        print i

実行結果。

http:/tinyurl.com/5mngx8

追記メモ。ラジオボタンチェックボックスへの入力はリストで渡す。

control_name = 'xxx'
form.possible_items(control_name) # 入力可能なリスト項目を取得
form[control_name] = ['yyy'] # 入力値をセット