@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
とりあえず動いた
もうちょっと汎用的に書いた方がいいだろうけど,どうせ本家ページのフォーマットもころころ変わるからいいや.


