Tag/Python
bit.lyのAPIを試してURLを短縮してみた
参考にしたサイト:
・Python: URL短縮サービスbit.lyのAPIを使ってみた上記サイトにある「bitly_test.py」を見れば大体どんな事が出来るのかが解る。
一応APIのドキュメントを自分のメモ用に下記リンク先へまとめておいた。
・短縮URLサービス bit.lyのAPI上記にまとめた内容を元に色々試してみる。
1.「URLを短縮」
まずは自分のサイトで「URLを短縮」を試してみる。
import sys, os, re, urllib, urllib2
import simplejson
url = "http://kishi-r.com/"
info_url = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login={自分のAPI用ログイン名}&apiKey={自分のAPIKey}"
url_data = urllib2.urlopen(info_url % ("shorten", "longUrl", url)).read()
url_info = simplejson.loads(url_data)
print url_info
これで短縮された内容がjson形式で返ってくる。その結果が下記になる。
{u'errorCode': 0, u'errorMessage': u'', u'results': {u'http://kishi-r.com/': {u'shortKeywordUrl': u'', u'hash': u'SOC0w', u'userHash': u'Oyrgz', u'shortUrl': u'http://bit.ly/Oyrgz'}}, u'statusCode': u'OK'}
ここで短縮されたURLはそのまま使用するので、適当な変数へ入れておく事にする。
bitly_url = url_info["results"]["http://kishi-r.com/"]["shortUrl"]
print bitly_url
2.「短縮したURLから元のURLを取得」
先ほど短縮したURLから元のURLを取得する。
info_url = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login=kishir&apiKey=R_b23e6cb3351dc3d73c1bb5091c622e4c"
url_data = urllib2.urlopen(info_url % ("expand", "shortUrl", bitly_url)).read()
url_info = simplejson.loads(url_data)
print url_info
結果が下記
{u'errorCode': 0, u'errorMessage': u'', u'results': {u'Oyrgz': {u'longUrl': u'http://kishi-r.com/'}}, u'statusCode': u'OK'}
3.「URL先の情報を取得」
URL先のサイト情報を取得する。info_url = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login=kishir&apiKey=R_b23e6cb3351dc3d73c1bb5091c622e4c"
url_data = urllib2.urlopen(info_url % ("info", "shortUrl", bitly_url)).read()
url_info = simplejson.loads(url_data)
print url_info
結果が下記
{u'errorCode': 0, u'errorMessage': u'', u'results': {u'Oyrgz': {u'hash': u'SOC0w', u'keywords': [], u'shortenedByUser': u'kishir', u'exif': {}, u'userHash': u'Oyrgz', u'contentLength': u'', u'id3': {}, u'calais': {}, u'longUrl': u'http://kishi-r.com/', u'version': 1.0, u'htmlMetaDescription': u'\u30ec\u30b3\u30fc\u30c9\u3068\u30b9\u30b1\u30dc\u30fc\u3068\u672c\u3068\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u305f\u3061\u3092\u66f8\u3044\u3066\u3044\u308b\u30d6\u30ed\u30b0\u3002\u30ec\u30b3\u30fc\u30c9\u306f\u8272\u3005\u306a\u30b8\u30e3\u30f3\u30eb\u3092\u805e\u3044\u3066\u3044\u308b\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306fPython\u3084Django\u30fbjQuery\u306e\u4e8b\u3092\u66f8\u3044\u3066\u3044\u308b\u4e8b\u304c\u591a\u3044\u3002', u'htmlMetaKeywords': [u'kishi-r', u'kishi', u'python', u'Django', u'jQuery', u'sk8', u'record'], u'calaisId': u'', u'thumbnail': {u'large': u'http://s.bit.ly/bitly/SOC0w/thumbnail_large.png', u'small': u'http://s.bit.ly/bitly/SOC0w/thumbnail_small.png', u'medium': u'http://s.bit.ly/bitly/SOC0w/thumbnail_medium.png'}, u'contentType': u'text/html; charset=utf-8', u'users': [u'kishir'], u'globalHash': u'SOC0w', u'htmlTitle': u'kishi-r.com', u'metacarta': [], u'mirrorUrl': u'', u'keyword': u'', u'calaisResolutions': {}, u'surbl': 0}}, u'statusCode': u'OK'}
MetaDescriptionやキーワードなんやらも含まれているみたいだ。
他にもエラーコード取得などもあるが、今回はここまででいいやぁ。
とりあえず試して出来たので、必要なパラメーターなどを設定して返ってくるクラスでも作っておけば、何かと使えそうだなぁ。
- Posted at:
- 2009/05/19 12:32:18
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2009/05/19/bit_ly_api/trackback/
Pythonでlivedoorクリップ数とはてブ数とYahooブックマーク数を取得
Pythonで書かれている参考ってあんまり無いので、やってみた。(ってかあれか、別に書くほどの事じゃないからみんな書かないのかwでもPerlはあるんだよなぁー。)
livedoorとはてブは「XML-RPC」で取得しています。
YahooブックマークはXMLで返ってくるので、そいつをBeautifulSoupなんかでパースすればOK
・livedoorURI → http://rpc.clip.livedoor.com/count
methodName → clip.getCount
parameters → 件数を取得したい URL を指定(最大 50 件まで指定可能)
のようなので、実際に試してみると下記のようになる。
>>> import xmlrpclib
>>> server = xmlrpclib.ServerProxy('http://rpc.clip.livedoor.com/count')
>>> TARGET_URL = 'http://kishi-r.com/2008/04/pythonlxmlamazonapi/'
>>> server.clip.getCount(TARGET_URL)
{'http://kishi-r.com/2008/04/pythonlxmlamazonapi/': 1}
1件だけあるみたいw
・はてなブックマークURI → http://b.hatena.ne.jp/xmlrpc
methodName → bookmark.getCount
parameters → 件数を取得したいURLを指定(複数指定可能/50件まで)
のようなので、実際に試してみると下記のようになる。
>>> server = xmlrpclib.ServerProxy('http://b.hatena.ne.jp/xmlrpc')
>>> TARGET_URL = 'http://kishi-r.com/'
>>> server.bookmark.getCount(TARGET_URL)
{'http://kishi-r.com/': 4}
>>> server.bookmark.getTotalCount(TARGET_URL)
118
のようです。 サイトトップのブックマーク数は「4件」で、サイト全体の場合は「118件」なのか。 まぁーそんなブックマークされる事も書いていないし、そんなもんかw
試しにMokujiを見てみる。>>> TARGET_URL = 'http://mokuji.deckkr.jp/'
>>> server.bookmark.getCount(TARGET_URL)
{'http://mokuji.deckkr.jp/': 311}
>>> server.bookmark.getTotalCount(TARGET_URL)
345
うん。やっぱオレのブログより全然多いねw
・Yahooブックマーク(本家に無いのかな?ちゃんと探してないからわからん) ※参考URL:blog.katsuma.tvを参考にしました。URI → http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=調べたいURL
のようなので、実際に試してみると下記のようになる。
>>> url = 'http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=http://kishi-r.com/'
>>> xml = urllib2.urlopen(url).read()
>>> xml'
<?xml version="1.0" encoding="utf-8" ?>\n<results>\n<SAVE_COUNT u="http%3A%2F%2Fkishi-r.com%2F" ct="0" />\n</results>\n<!-- bm-num11.ssearch.kks.yahoo.co.jp uncompressed/chunked Mon Feb 9 17:06:50 JST 2009 -->\n'>>>
>>> url = 'http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=http://mokuji.deckkr.jp/'
>>> xml = urllib2.urlopen(url).read()
>>> xml
'<?xml version="1.0" encoding="utf-8" ?>\n<results>\n<SAVE_COUNT u="http%3A%2F%2Fmokuji.deckkr.jp%2F" ct="25" />\n</results>\n<!-- bm-num11.ssearch.kks.yahoo.co.jp uncompressed/chunked Mon Feb 9 17:09:02 JST 2009 -->\n'
お、「25件」あるみたいっすね。
他必要そうなのって「delicious」くらいかな?
でもサイトがリニューアルしてるから、何かと変わってるんだろうなぁー。
- Posted at:
- 2009/02/09 17:30:51
- 0 Comments
- 1 TrackBack
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2009/02/09/bookmark_api/trackback/
Django1.0リリース
出たなー
色々やらないとね
- Posted at:
- 2008/09/05 01:34:34
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2008/09/05/django_release/trackback/
GoogleCodeからjqueryに関連するものを引っ張ってこようっと(その1)
とりあえずGoogleCodeにアクセスして、最初のページのURLとタイトルを持ってくる。
# vim: encoding=utf-8 :
import urllib2
from BeautifulSoup import BeautifulSoup
GOOGLE_CODE_URL = 'http://code.google.com/hosting/search'
def get_google_code_list():
search = '?q=jquery&projectsearch=Search+Projects'
url = GOOGLE_CODE_URL + search
opener = urllib2.build_opener()
r = opener.open(url)
soup = BeautifulSoup(r)
list = {}
for div in soup('div', {'class':'name'}):
for a in div('a'):
list[a.string] = a.get('href')
return list
1.まずはGoogleCodeのサイトにアクセスしてjqueryで検索を掛ける。
2.それをBeautifulSoupでパースして「URL」と「タイトル」のセットをリストへぶち込み
3.それをpirntして確認
{
u'jquery-ajaxq\n - AJAX request queueing for jQuery': u'/p/jquery-ajaxq/',
u'jquery-lightbox\n - Lightbox style effects in a jQuery plugin': u'/p/jquery-lightbox/',
u'jquery-em\n - Monitor Font Size Changes with jQuery': u'/p/jquery-em/',
u'jquery-flickr\n - jQuery Flickr plug-in is a JavaScript interface for Flickr Services AP...':
u'/p/jquery-flickr/', u'jquery-color-utils\n - jquery-color-utils': u'/p/jquery-color-utils/',
u'jquery-domec\n - jQuery DOM elements on-a-fly': u'/p/jquery-domec/',
u'jquery-session\n - Simulate session vars in jQuery': u'/p/jquery-session/',
u'jquery-decorated\n - jQuery plugin to transform simple HTML components into more complex on...': u'/p/jquery-decorated/',
u'jquery-aop\n - Aspect Oriented Extensions for jQuery': u'/p/jquery-aop/',
u'jquery-dropj\n - A jQuery plugin to add drop caps (large floating initial capital lette...': u'/p/jquery-dropj/'
}
とりあえず出来たので、次はページがあるまで取得するのをやるが・・・明日にするかなw
・全ページのデータを取得してDBにて管理
・以前のデータと比較して更新されていればアップデート、そうでなければ何もしない
・もしURLもしくはプロジェクトが存在しなければ、削除フラグを立てて、更新しなくする
というのをCronに登録しておけば、自動的にどれが更新されているかとかが解るリストが作れるな。
- Posted at:
- 2008/08/07 23:57:27
- 0 Comments
- 1 TrackBack
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2008/08/07/google_jquery_1/trackback/
[pyspa]温泉行ってきました
移行した時にエントリーを追記するの忘れてたw
なのでもう一度書いておこうっと。

Getしました。
一人分足りないですがorz
今回は参加されないとの事でした。
来ている方からは頂きました。
うれしいっすなぁ〜。
サインを書いて下さったみなさん、ありがとうございました!

温泉ではブログをPicoLogへ移行して、
まだドメインの移管など残タスクがあるので、
これ以降はあまり書きたくないなw
幹事のVoluntasさんとkuma8さんお疲れ様でした。
そしてありがとうございました。
- Posted at:
- 2008/07/08 17:36:28
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2008/07/08/pyspa3/trackback/
Python「lxml」でAmazonAPIを使ってみた
やってみた。
おもしろかった。
だけどもっとレスポンスが速い方法があるはず。
誰か教えてw
下記にまとめてみた。
http://pod-head.net/wiki/amazonapi_python
早くブログを移行したいけど、
時間が余りないせいか、自分自身にゆとりがないので、
出来てないorz
- Posted at:
- 2008/04/01 23:17:43
- 0 Comments
- 0 TrackBacks
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2008/04/01/pythonlxmlamazonapi/trackback/
昨日はスノボー、今日はPythonNerima
昨日は、
前の会社の人たちと湯沢の神立へスノボーしに行ってきた。
楽しかった!
来年は泊まりだな。って言ってた。
なんならマイクロバス借りてみんなで、
行けたらおもしろいかも。
いつもはクアハウスで温泉に入って休憩所でのんびりしてから、
寝るのだが・・・
やってねー!
なんか暗いからおかしいと思ったんだよねw
しょうがなく近くの健康ランドへGO!
けっこうぼろいけど、
ちゃんと寝られたからよかった。
(すげ〜イビキかいているやつがいたけど・・・。)
ゲレンデのコンディションはそれなりに良かった。
(春スキーだけどと言うことで。)
天候は微妙だったが、
かなりの本数を滑れたのが、
なによりですね。
筋肉痛も軽くあるぐらいで、
思ったよりも全然動ける。
良かったよぉ〜。
今日はPython練馬って事で、
練馬区練馬で飲んできた。
集まったのは、
@MiCHiLU
@aohta
@kishir(自分)
の合計3人。
人数は少ないけど、
多いと誰と喋ろうかすごい迷って、
あまり話せないので、
良かった。
軽い感じで日常会話っぽいのも
なんか新鮮だったな〜。
技術のことよりも、
雑談って感じかなw
後、
みんな練馬に来れば良いよ。
良いところだよ。
なんなら大泉学園にも来れば、
最高にうまい焼鳥屋があるんだけどな。
(近いと自分が帰るのが楽だからってのが重要w)
さて、
今日はまだ作業が残っているのでやらないと。
本当はドラゴンボールGTを見たいけど、
我慢、我慢。
- Posted at:
- 2008/03/31 00:00:43
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2008/03/31/pythonnerima/trackback/
PyhonでYahooAPI関連検索を試してみた
Yahoo!デベロッパーネットワーク
というページがあり、
ここにはウェブ検索や画像検索などのAPIの
詳細が書かれている。
関連検索ワードWebサービスは下記から。
http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html
使用するのには、
アプリケーションID
が必要みたいなので登録した。
後気をつけなければいけないのが、
関連検索ワードWebサービスは、
24時間中1IPアドレスにつき50000件のリクエストが上限となっています。
なるほど。
お金を払って商用とかに使えるのかな?
今度聞いてみたいな。
今回は以前使用した「BeautifulSoup」を使って、
早速やってみる。
(nobuさんにlxmlで良くない?って言われてたな。。。今度はそっちでやってみよう。)
>>> import urllib2
>>> from urllib import quote
>>> from BeautifulSoup import BeautifulSoup
>>> opener = urllib2.build_opener()
>>> yahoo_url = u'http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?'
>>> yahoo_id = u'appid=登録したアプリケーションID'
>>> search_tag = u'python'<br />
>>> yahoo_query = 'u&amp;amp;amp;amp;amp;query=' + quote(search_tag.encode('utf-8'))
>>> yahoo_html = opener.open(yahoo_url + yahoo_id + yahoo_query).read()
>>> yahoo_soup = BeautifulSoup(yahoo_html)
>>> print yahoo_soup
実際に取得した値を表示させるとこんな感じ。
< ?xml version='1.0' encoding='utf-8'?>
monty python
colt python
python インストール
python 制限
python cgi
python 入門
python ダウンロード
<!-- pls139.search.tnz.yahoo.co.jp uncompressed/chunked Thu Feb 14 23:52:57 JST 2008 --><br />
<!-- ws0.search.bbt.yahoo.co.jp uncompressed/chunked Thu Feb 14 23:52:57 JST 2008 --><br />
<result>の部分のみを取得する。
>>> yahoo_obj = []
>>> for yobj in yahoo_soup.findAll('result'):
... yahoo_obj.append(''.join([str(t) for t in yobj.contents[:]]))
こんな感じかな。
とりあえず取れた。
- Posted at:
- 2008/02/14 23:13:16
- 0 Comments
- 0 TrackBacks
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2008/02/14/pyhonyhooapi/trackback/
Pythonではてなダイアリーキーワード自動リンクAPIを試してみた
はてなダイアリーキーワード自動リンクAPIを
今作成中のブログに使えないか考えてたので、
試してみた。
サンプルは、
Perlしかなかったので、
Pythonで書いてみた。
#まずxmlrpclibをインポートします。
>>> import xmlrpclib
#次にurlを指定します。
>>> server = xmlrpclib.ServerProxy('http://d.hatena.ne.jp/xmlrpc')
#次は実際リンクを貼りたい内容と各属性を指定しています。
>>> result = server.hatena.setKeywordLink({'body': 'はてなでスケボーやレコードなどを検査するとどんなレスポンスが返ってくるのだろう?', 'score': '20', 'a_target': '_blank', 'a_class': 'keyword'})
#最後にレスポンスを表示してみる
>>> print result<
<a>はてな</a>で<a>スケボー</a>や<a>レコード</a>などを検査するとどんなレスポンスが返ってくるのだろう?
指定するパラメーターなどははてなに記載されていました。
uri : http://d.hatena.ne.jp/xmlrpc
encoding : utf8
methodName : hatena.setKeywordLink
parameters : 以下を参照
body(string): キーワードを抽出するテキストを指定します。
score(int): 0〜50。キーワードスコアのしきい値を指定します。指定された値よりもスコアが大きいキーワードのみが抽出されます。省略可。
cname(array): キーワードのカテゴリーを指定します。指定があった場合、「一般」と指定されたカテゴリーのキーワードが抽出されます。指定が無かった場合は、全カテゴリーとなります。book,music,movie,web,elec,animal,anime,food,sports,game,comic,hatena,clubが指定可能です。省略可。
a_target(string): アンカー(a)タグのtarget属性値を指定します。省略可。例:_blank
a_class(string): アンカー(a)タグのclass属性値を指定します。省略可。例:keyword
今回指定したのは、
・body : 'はてなでスケボーやレコードなどを検査するとどんなレスポンスが返ってくるのだろう?
・score : 20
・a_target : _blank
・a_class : keyword
です。
これをブログに組み込んだら面白いかな?
と考え中です。
- Posted at:
- 2008/02/09 00:15:39
- 0 Comments
- 0 TrackBacks
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2008/02/09/pythonapi/trackback/
Social Graph API をPythonでやってみた
気になったのでやってみた。
自分のtwitterのページでFollowされているのを取得する。
まずはベースとなるURLが
http://socialgraph.apis.google.com/lookup
こちらは、
GoogleCodeに記載されている。
http://code.google.com/apis/socialgraph/
で引数を決める。
今回使用したのは、
・pretty(インデント・改行される。)
・callback(コールバック関数を指定)
・edo(FollowしているURLを表示させる)
In [1]: base_url = 'http://socialgraph.apis.google.com/lookup?q=http://twitter.com/kishir&pretty=1&callback=foo&
edo=1'
In [2]: html = opener.open(base_url).read()
In [3]: print html
foo({
"canonical_mapping": {
"http://twitter.com/kishir": "http://twitter.com/kishir"
},
"nodes": {
"http://twitter.com/kishir": {
"attributes": {
"url": "http://twitter.com/kishir",
"profile": "http://twitter.com/kishir",
"rss": "http://twitter.com/statuses/user_timeline/kishir.rss",
"atom": "http://twitter.com/statuses/user_timeline/kishir.atom"
},
"nodes_referenced": {
"http://kishi-r.com/": {
"types": [
"me"
]
},
"http://twitter.com/kano_e": {
"types": [
"contact"
]
},
"http://twitter.com/soundkitchen": {
"types": [
"contact"
]
},
"http://twitter.com/tasukuchan": {
"types": [
"contact"
]
},
"http://twitter.com/yoshuki": {
"types": [
"contact"
]
}
}
}
}
});
なんでだろう?
Followされているユーザーが全て表示されない。
引数「q」に他のURLを加えると増えるのだが、
それも良くわからないなぁ~。
もうちょっと試してみるかな。
- Posted at:
- 2008/02/04 18:24:01
- 0 Comments
- 0 TrackBacks
- Tags:
- Python
- Trackback:
- http://kishi-r.com/2008/02/04/social_graph_api_python/trackback/

