Google App Engine SDK: XML データの取得、パース、結果表示まで
ちょうどあまびきを 1 から作り直そうと考えていたところだったので、Google App Engine でやってみることにした。前回、検索フォームの設置まで行ったので、実際に Amazon ECS にリクエストして、返ってきたデータをパース、さらに画像を表示するまでをやってみた。
まず Google App Engine SDK と組み合わせないで、Amazon から XML データを取ってきてパースするというところまでは何とかできた。でも、いざ Google App Engine と組み合わせると動かない。
urllib でエラー
まず、urllib モジュールの urlopen を使って Amazon にリクエストしようとしたら、
`AttributeError: 'module' object has no attribute 'unlink'`
というエラーが出てうまく行かなかった。urllib2 でもやってみたが、別のエラーが出てうまく行かない。
代わりに Google App Engine の URL Fetch API を使うことにした。
ElementTree でもエラー
Google App Engine には Python 2.5.x が入っているということなので、ElementTree モジュールを使って XML をパースしようと考えた。が、いざ Google App Engine 上(ローカル)で実行してみると、
`ImportError: No module named expat; use SimpleXMLTreeBuilder instead`
というエラーが出た。
SimpleXMLTreeBulider で検索すると、Big Sky :: Google App EngineでXMLをパースする方法(python版WebService::Simpleを使ってflickr画像検索を作る) に行き当たる。だが私のレベルでは、PyWrapper が一体何で、どうすればいいのかわからず……。
だが PyWrapper のサイト内にある SimpleXMLTreeBuilder.py と ElementTree.py を落としてきて使ってみると、うまく XML がパースできるようになった。とりあえずよしとする。
なお、SimpleXMLTreeBuilder の使い方については、上述の Big Sky の記事にある webSimple.py を参考にさせていただいた。感謝。