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: | Filed under: 技術 | Tags: , , , , | No Comments »

Leave a Reply