PythonでRSSフィードなどを取得する
PythonでRSSフィードなどを取得することをしてみました。以前、ActionScript3で試した事があります(flash on 2010-1-7 - wonderfl build flash online)。
今回は、Pythonでやってみることにしました。やってみると、いろいろなライブラリーがあり、あれこれ迷っているうちに、3つほど試してみました。
feedparser
- http://feedparser.org/
- 結構有名なライブラリーらしい
- namespace、attributeの処理が不明...どうしたらいいのか
実際にやってみると
#!/usr/bin/env python # -*- coding: utf-8 -*- import feedparser url = 'http://api.flickr.com/services/feeds/photoset.gne?set=72157624507131550&nsid=26712246@N00&lang=en-us&format=rss_200' data = feedparser.parse(url) for entry in data['entries']: print entry['title']
lxml
- http://codespeak.net/lxml/
- 速度重視のライブラリー
- 個人的には使いやすい気がする
- でも、インストールに手間取ったのと、GAE(Google App Engine)では使えない
- 名前空間も、attribute(属性)も扱える
インストール
- ファイルをダウンロード
- 解凍して、ディレクトリに移動
- sudo python setup.py install
#!/usr/bin/env python # -*- coding: utf-8 -*- from lxml import objectify import urllib2 url = 'http://api.flickr.com/services/feeds/photoset.gne?set=72157624507131550&nsid=26712246@N00&lang=en-us&format=rss_200' o = objectify.parse(urllib2.urlopen(url)).getroot() items = o.channel.item['{http://search.yahoo.com/mrss/}thumbnail'].attrib['url'] for item in o.channel.item: print item['{http://search.yahoo.com/mrss/}thumbnail'].attrib['url']
ElementTree
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from xml.etree.ElementTree import * url = 'http://api.flickr.com/services/feeds/photoset.gne?set=72157624507131550&nsid=26712246@N00&lang=en-us&format=rss_200' result = urllib.urlopen(url) rss = fromstring(result.read()) for item in rss.getiterator('item'): for e in list(item): if e.tag == '{http://search.yahoo.com/mrss/}thumbnail': print e.items()