RSSフィードをLCDに表示させる(未完放置)
えらく久しぶりにfeedparserを使う。
http://feedparser.googlecode.com/files/feedparser-4.1.zip
READMEを読む。ライセンスが独自なのだな。バイナリで配布する場合には、ライセンス掲示が必要か。
Windowsでのインストールは、どうするのかな。setup.py形式でのインストールになっているようだ。
>python setup.py install
としてみたけど、pythonはコマンド検索パスに入っていないので起動できなかった。
拡張子の関連付けで面倒を見てくれるはずなので、
>setup.py install
とする。
パスを入力するのがめんどくさい場合は、コマンドプロンプトのウインドウにsetup.pyをドラッグすると楽。
まずは、リハビリを兼ねてIDELで動作チェック。
>>> import feedparser >>> d = feedparser.parse("http://fxfeeds.mozilla-japan.org/rss20.xml") >>> for entry in d.entries: print entry.title >>> print d.version None >>> print d.feed.title Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> print d.feed.title File "C:\Python25\Lib\site-packages\feedparser.py", line 236, in __getattr__ raise AttributeError, "object has no attribute '%s'" % key AttributeError: object has no attribute 'title'
なんかダメ風。Windowsじゃ動かないとか?
http://d.hatena.ne.jp/kinneko/20050222/p3
取れなかった場合のエラーを戻す仕組みは相変わらずないのかな?
他に依存しているモジュールがあったかもな。
調べてみたけど、なさそうだな...
http://wiki.python.org/moin/RssLibraries
代替できそうなものはない。
pyxmlとかほんとにいらないの?
どうも、feedparserのせいではないようだ。
urllibでアクセスしてみると、socket.getaddrinfoに失敗している。
>>> import urllib >>> f = urllib.urlopen("http://d.hatena.ne.jp/kinneko/rss") Traceback (most recent call last): File "<pyshell#33>", line 1, in <module> f = urllib.urlopen("http://d.hatena.ne.jp/kinneko/rss") File "C:\Python25\lib\urllib.py", line 82, in urlopen return opener.open(url) File "C:\Python25\lib\urllib.py", line 190, in open return getattr(self, name)(url) File "C:\Python25\lib\urllib.py", line 325, in open_http h.endheaders() File "C:\Python25\lib\httplib.py", line 856, in endheaders self._send_output() File "C:\Python25\lib\httplib.py", line 728, in _send_output self.send(msg) File "C:\Python25\lib\httplib.py", line 695, in send self.connect() File "C:\Python25\lib\httplib.py", line 663, in connect socket.SOCK_STREAM): IOError: [Errno socket error] (11001, 'getaddrinfo failed')
socket.getaddrinfoのせいかどうか確認してみる。
>>> import socket >>> socket.getaddrinfo("d.hatena.ne.jp", "80") [(2, 1, 0, '', ('59.106.108.77', 80)), (2, 2, 0, '', ('59.106.108.77', 80))]
取れますね。
proxyごしにアクセスしようとすると出ることがあるようだけど、今のISPは透過proxyでも入っているのかな?
とりあえず放置。