@sakusakubotの抽出する今週のみどころがおかしくなった
何も表示されていない...
よく見るとHTMLがなんかおかしい...
月曜はpタグで囲まれてるけど,火曜以降は囲まれていない.今まで使ってきたスクリプトだと対応できないパターンだ(最初,テキストでHTMLを表示してたけど,文法エラーが勝手に修正されてしまうので,画像で差し替え).
sakusaku|tvk
〔特別!〕 ●今週のゲストは、中孝介さん! ...
〔特別!〕
●今週のゲストは、中孝介さん!
というわけで修正.とりあえず動けばいい.
GAEで使う部分.getMidokoro()を実行するとみどころデータが得られる.キーに曜日 ("mon", "tue", "wed", "thu", "fri") を指定すると対応する曜日のみどころリストが得られる.
from google.appengine.api import urlfetch import re def getMidokoro(): htmlurl = "http://www3.tvk-yokohama.com/saku2/midokoro.php" result = urlfetch.fetch(htmlurl) midokoro = {} h4Pattern = re.compile("<[hH]4>(.*)[hH]4>") clearerPattern = re.compile("
") if result.status_code == 200: lines = result.content.split("\n") f_in_midokoro = False f_is_first_h4 = True buf = [] key = None for l in lines: m = h4Pattern.match(l) if m: if not f_is_first_h4: midokoro[key] = getMidokoroItems(buf) buf = [] else: f_is_first_h4 = False f_in_midokoro = True dow = unicode(m.group(1),"utf-8") key = None if re.search(u"月曜日",dow): key = "mon" elif re.search(u"火曜日",dow): key = "tue" elif re.search(u"水曜日",dow): key = "wed" elif re.search(u"木曜日",dow): key = "thu" elif re.search(u"金曜日",dow): key = "fri" continue if f_in_midokoro and clearerPattern.match(l): f_in_midokoro = False midokoro[key] = getMidokoroItems(buf) buf = [] if f_in_midokoro: buf.append(unicode(l,"utf-8")) return midokoro def getMidokoroItems(buf): paragraph = "".join(buf) paragraph = paragraph.strip() paragraph = paragraph.replace("","") paragraph = paragraph.replace("
","") paragraph = paragraph.replace(u" ","") data = re.split("<[bB][rR]( )*/?>",paragraph) items = [] tmptxt = "" for d in data: if re.search(u"●",d): items.append(tmptxt) tmptxt = d.replace(u"●",u"▽") else: tmptxt += d items.append(tmptxt) return items
とりあえず動いた
もうちょっと汎用的に書いた方がいいだろうけど,どうせ本家ページのフォーマットもころころ変わるからいいや.