Google App Engine in Django Hack-a-thon

Django Hack-a-thon Disc.8 に参加してきました。初!Google App Engine Hack-a-thon のチューターを担当させていただくことになったのですが、いい具合に何もしません(できません)でした・・・。どちらかというと参加者として、色々と勉強させていただいたのでお金を払ったほうがよかったような気もしています。とりあえず、勉強させていただいたこととかを書いておきます(笑)。私がやったことは2つ。
  • HTML を解析し、Web API として利用できるようにするための Python ライブラリーを書く
  • Django on Google App Engine で Twitter の oAuth を使うアプリを書く
午前中書いてた Python ライブラリーは仕事のコードなので(汗)公開できませんが、HTML解析でWebサービスを操作するためのものです。それも全然 valid じゃない html ・・・・。最初は BeautifulSoup でやろうと思っていたのですが、Parse Error となるのであえなく断念。一応フォーマットは決まっているようだったので、正規表現を使うことにしました。
>>> import re
>>> import urllib2 as urllib
>>> url = 'http://google.com/' # 例だす
>>> opener = urllib2.build_opener()
>>> html = opener.open(url).read()
# [html が出力される]
>>> print html # 取得したhtmlが出力される
>>> # 適当にhrefタグ内を取り出す
>>> p = re.compile(u"href=\"(?P<link>[\w:/?&.-_%]+)\"",re.I)
>>> # shift_jis はそのページのエンコード
>>> for link in p.findall(unicode(html, "shift_jis")): 
...     print link
# [link の一覧が出力される]
一部だけの情報をとりたいのであれば、BeautifulSoup よりも正規表現が速いです。コードはごりごりになっちゃいますが。一応動きました。

午後からは oAuth なアプリ。Twitter と接続することにしますた。やっぱり Google App Engine の urllib に悩まされました。調べたら、グループにも何回か登場してますね(コレとかコレとか)。使ったスクリプトはtwitter_app。app-engine-patch使うと簡単に動きます。変更箇所は以下のとおり。
- url = str(oauth_request.to_url())
+ url = str(oauth_request.to_url()).replace('https://' + SERVER, '').replace('http://' + SERVER, '')
むりくりパッチです。改修待ち。でも一応oAuthは動いたので、アプリを作ることにしました。そのうち公開しますw

コメント

このブログの人気の投稿

Python から Win32 API 経由で印刷する

財務諸表 (Financial Statements)

Django と Python 3 - #python_adv