niiyan's blog

niiyanの個人ブログ。

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 EngineURL 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.pyElementTree.py を落としてきて使ってみると、うまく XML がパースできるようになった。とりあえずよしとする。

なお、SimpleXMLTreeBuilder の使い方については、上述の Big Sky の記事にある webSimple.py を参考にさせていただいた。感謝。

結果の表示

とりあえず画像の表示まで。