Google App EngineでAmazon Web Serviceにアクセス。

http://kingyo-bachi.blogspot.com/2008/06/google-app-engineweb.html
を読むのは必須です。ネームスペースが重要なのです。このページがなければ一生悩んでいたかもしれません。
ただし、現在は2008-04-07ではなく、2008-08-19となっているようです。
しかも、Mac版FireFoxでデータを取得すると、こんな感じで表示されてしまい見えません。そのため、現在はなくなったのではないかとかちょっとはまりました。生データで確認することが必要ですね。

また、最初だけでなく、その後findtext等を行う場合もネームスペースを付ける必要があります。そこもはまりました。

というわけで、タイトルを列挙する場合はこんな感じになります。GAEO版です。

import xml.etree.cElementTree as etree
from google.appengine.api import urlfetch
from gaeo.controller import BaseController
class SearchresultController(BaseController):
def AmazonResult(self):
url = 'http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=xxx&Operation=ItemSearch&SearchIndex=Books&Title=Harry%20Potter&Version=2008-08-19'
xml = urlfetch.fetch(url).content
dom = etree.fromstring(xml)
namespace ='http://webservices.amazon.com/AWSECommerceService/2008-08-19'
items = dom.findall('.//{%s}Item' % namespace)
for st in items:
title = st.findtext('.//{%s}Title' % namespace).encode('utf-8')
self.render(text = title)
#self.render(text = xml)

Powered by Qumana