読者です 読者をやめる 読者になる 読者になる

めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

PythonでRSSフィードなどを取得する

PythonRSSフィードなどを取得することをしてみました。以前、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

インストール
  • ファイルをダウンロード
  • 解凍して、ディレクトリに移動
  • 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

  • Python 2.5から標準ライブラリーになった
  • GAEでも使える(はず、テストしていない)
  • XPathで指定も出来るライブラリー(でも、XPathを使った事がない)
#!/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()