LDR のピンの取得、できた - Python編

| コメント(0) | トラックバック(0)

LDR (livedoor Reader) のピンを取得してくるプログラムを以下の通り、PHP で実装しましたが、Python でもやってみたくなり再実装。

まずは、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 さんのコードを見てみると、スクリプトの場合、以下のような作法 ? で書くと良さ気。

  1. if __name__ == '__main__': とか使って、その中で定数的なものを定義 (変数の値を設定) して
  2. def function_name に実質的な処理を記述

他にも、以下のあたりで同様に if __name__ == '__main__': している。

おまけはこの辺で。

トラックバック(0)

トラックバックURL: http://jamz.jp/cgi/mt/mt-tb.cgi/1726

コメントする

このブログ記事について

このページは、やまざきが2008年11月30日 21:03に書いたブログ記事です。

ひとつ前のブログ記事は「名刺交換した人からも許諾が必要なの ?」です。

次のブログ記事は「ネットで病気を調べるのはサイバーコンドリア」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。