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'] # 入力値をセット