ElementTreeでiTunesのfeedをパースする
iPhoneアプリのデータをとるべくPythonではみんなが使っているUniversal Feed Parserで書き始めたものの、拡張されたnamespaceを操作できないことがわかり、ElementTreeをつかうことにした。
当然できるはずだと思っていたので時間を無駄にした。ドキュメントを読みましょう。
#coding:utf-8 import urllib from xml.etree import ElementTree from dateutil import parser as date_parser def parse_app_feed(): free_url = "http://itunes.apple.com/jp/rss/topfreeapplications/limit=10/xml" atom_ns = 'http://www.w3.org/2005/Atom' itunes_ns = 'http://itunes.apple.com/rss' xml_string = urllib.urlopen(free_url).read() #xml = ElementTree(file=urllib.urlopen(free_url)) xml = ElementTree.fromstring(xml_string) xml_updated = date_parser.parse( xml.find('./{%s}updated' % atom_ns).text) xml_uri = xml.find('./{%s}id' % atom_ns).text for e in xml.findall('.//{%s}entry' % atom_ns): uri = e.find('./{%s}id' % atom_ns).text name = e.find('./{%s}name' % itunes_ns).text title = e.find('./{%s}title' % atom_ns).text category = e.find('./{%s}category' % atom_ns).attrib['term'] description = e.find('./{%s}summary' % atom_ns).text release_at = date_parser.parse( e.find('./{%s}releaseDate' % itunes_ns).text) artist_name = e.find('./{%s}artist' % itunes_ns).text artist_uri = e.find('./{%s}artist' % itunes_ns).attrib['href'] price = float(e.find('./{%s}price' % itunes_ns).attrib['amount']) currency = e.find('./{%s}price' % itunes_ns).attrib['currency'] icon_uri = e.findall('./{%s}image' % itunes_ns)[-1].text screen_uri = [_ent for _ent in e.findall('./{%s}link' % atom_ns) \ if 'image' in _ent.attrib['type']][0].text print '%s\t%s\t%s' % (name, category, description[:10]) if __name__ == '__main__': parse_app_feed()
Tapic Games FREE FOR A ! Games テレビ朝日系列「お願 Kozeni Lite Games コインをタップして消 整形マニア Entertainment iPhoneで美容整 Chariso(Bike Rider) Games ☆今だけ無料☆ Find My iPhone Utilities iPhone、iPa ガイラルディア Games 無料で遊べる王道系の ZOZOTOWN Lifestyle 日本最大級のファッシ 電卓少女 Entertainment 『電卓少女』で計算萌 Ringtone Maker - Make free ringtones from your music! Music ☆ iPodの中の曲Posted: November 30th, 2010 | Author: yamakk | Filed under: 技術 | Tags: feed, iphone, itunes, python, rss | No Comments »
Leave a Reply