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