LDR (livedoor Reader) のピンを取得してくるプログラムを以下の通り、PHP で実装しましたが、Python でもやってみたくなり再実装。
- [J] livedoor Reader のピンをゴニョゴニョしたい - Jamz
- [J] HTTP クライアント (Web クライアント) - PHP 編 (rhaco 編) - Jamz
- [J] LDR のピンの取得、できた - Jamz
まずは、Python での HTTP クライアントの実現方法から調査し始め...
[J] HTTP クライアント (Web クライアント) - Python 編 - Jamz
ようやく形になった。
ただ、今のところ、POST でデータを取得するとこまで。なのでデータ形式が JSON のままですが ... おいおい整形していきます。
先にコードを晒しておきます。
#!/usr/bin/env python
# coding: UTF-8
import urllib, urllib2, cookielib
import simplejson
LIVEDOOR_ID = 'your_id'
PASSWORD = 'your_password'
LDR_URL = 'http://reader.livedoor.com/reader/'
PIN_GET_URL = 'http://reader.livedoor.com/api/pin/all'
cookie_jar = cookielib.CookieJar()
url_opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
res = url_opener.open(LDR_URL)
url_query = urllib.urlencode({'livedoor_id':LIVEDOOR_ID, 'password':PASSWORD})
res = url_opener.open(res.geturl(), url_query)
pin_json = url_opener.open(PIN_GET_URL, url_query).read()
pin_data = simplejson.loads(pin_json)
for pin in pin_data:
print pin['title']
print pin['link']
書いてて思ったけど、やはり pyBrowser (勝手に名付けているだけで、そんなモジュールはない) が欲しい。Cookie を意識してセットしないといけないあたりが面倒。
Twitter の API を扱う python-twitter - Google Code を参考にすれば ? そのあたりを隠蔽したモジュールが作れそう。
それとリクエストを発行するときにクエリーがなくても明示的に POST できる方法はないのか。
http://reader.livedoor.com/api/pin/all は、クエリーがないけど POST でリクエストを発行しないといけないので (ry
以下のあたり色々みたけど分からず。
誰か教えて...
おまけ - Python でスクリプト書くときのお作法
python お作法的には、もう少し違う書き方がいいのかも。
iTunesで聞いている曲をTwitterにPostするPythonのスクリプト -- TRIVIAL TECHNOLOGIES 2.0
上記、ats さんのコードを見てみると、スクリプトの場合、以下のような作法 ? で書くと良さ気。
if __name__ == '__main__':とか使って、その中で定数的なものを定義 (変数の値を設定) してdef function_name に実質的な処理を記述
他にも、以下のあたりで同様に if __name__ == '__main__': している。
おまけはこの辺で。


コメントする