ニュースサイトのAPIを使った掲示板 改め、ニュースサイトを読み込んだ結果を表示する掲示板
今日の作業内容は次の通り。
- サイトのAPIを使うことは諦めた。
- フィードを解析するものにしようとしたが、家に帰らないと十分な調査ができないのでやり方がよくわからない。
- HTMLParseの適切な方法も見つからず。
- なのでurlopenして力技でParseした。でもhttp://www.nikkei.co.jp/news/main/でしか使えない。
- www.nikkei.co.jp/news/main/が更新されてもちゃんと動作することを祈る。
その結果、こんなコードになった。
# encoding: utf-8 # --------------------------------------------------------------------------- # messageb5.py (2008/10/14) # --------------------------------------------------------------------------- import wx import time import urllib class MyApp(wx.App): def __init__(self): wx.App.__init__(self) self.wlength = 350 self.hlength = 80 self.frm = wx.Frame(None, -1, u"日経ネット", size=(self.wlength, self.hlength)) self.pnl = wx.Panel(self.frm, -1) self.frm.Show() self.ReadURL() self.n = 2 # このマジックナンバーをどうにかする。 self.l = self.wlength self.tid = wx.NewId() self.t = wx.Timer(self.frm, self.tid) self.Bind(wx.EVT_TIMER, self.OnTimer, id=self.tid) self.t.Start(30) def OnTimer(self, event): self.l -= 1 self.pnl.DestroyChildren() self.txt = wx.StaticText(self.pnl, -1, self.topics[self.n], pos=(self.l, 10)) if self.l <= -self.wlength: self.l = self.wlength self.n += 1 if self.n +1 > len(self.topics): self.t.Stop() def ReadURL(self): # ニュースサイトの読み込み u = "http://www.nikkei.co.jp/news/main/" f = urllib.urlopen(u) data = f.read().split() self.topics = [] for i in xrange(len(data)): # この部分汎用性なし if data[i].find('N-headLine')!= -1\ and data[i].find('>')!=-1 and data[i].find('>') == -1: self.topics.append(data[i][data[i].find('>')+1:data[i].find('<')]) f.close() app = MyApp() app.MainLoop()
気づいたこと
- 日本語文字列をリストに入れてリストをprintしたら文字化けしてた。
- Parseはもっとスマートにやりたい。