Pythonで、Googleページランク表示ブログパーツを自作してみる。

Pythonで、Googleページランク表示ブログパーツを自作してみる。

なお、Googleページランク表示ツールはmod_wsgiPythonアプリとして実行するので、mod_wsgiのセットアップは以下を参照してください。

ServersMan@VPS(CentOS)にWSGIインターフェース mod_wsgiをインストールする


1.httpd.confにWSGIScriptAliasを追加しApacheを再起動する

WSGIScriptAlias /prankimg /var/www/html/test/prankimg.wsgi

Apacheの再起動は/etc/init.d/httpd restart


2.ページランク表示スクリプト

(1)pagerank.pyの作成

http://code.google.com/p/corey-projects/source/browse/trunk/python2/pagerank.py

より、Googleページランク取得用のスクリプトを取得し、19行目を

gurl = 'http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)

から

gurl = 'http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)

に変更し/var/www/html/test/配下に、pagerank.pyとして格納


(2)prankimg.wsgiの作成

以下のソースを、/var/www/html/test/配下に、prankimg.wsgiとして格納

#-*- coding:utf-8 -*-

import sys
sys.path.append('/var/www/html/test')

import cgi
import pagerank
from PIL import Image, ImageDraw, ImageFont

def application(environ, start_response):
	status = '200 OK'
	prank = '0'

	method = environ.get('REQUEST_METHOD')
	if method == "GET":
		query = dict(cgi.parse_qsl(environ.get('QUERY_STRING')))
		if 'url' in query:
			url = query['url']
			if url:
				prank = pagerank.get_pagerank(url)


	# pagerankイメージを作成

	# イメージの外側を黒枠にするため
	# 大きめの黒長四角にちょっと小さい白長四角を重ねて、
	im=Image.new('RGB',(72,12),(0,0,0))
	im2=Image.new('RGB',(70,10),(255,255,255))
	im.paste(im2, (1,1,71,11))

	# それに、ページランク用の青四角を重ねて、
	if prank != 'N/A':
		r = int(prank) * 7
		im.paste((0,255,255),(1,1,r,11))

	# ページランクの値を描画。
	draw = ImageDraw.Draw(im)
	draw.text((3, 1), prank, fill=(255,0,0))
	data = im.tostring('jpeg', 'RGB')

	response_headers = [('Content-type', 'image/jpg;'),
						('Content-Length', str(len(data)))]
	start_response(status, response_headers)
	return data

3.テスト

こんな感じの、HTMLをブログなどに貼付けると

<img src="http://chamu.org/prankimg?url=http://www.w3.org/" border="0" />


W3Chttp://www.w3.org/)さんのページランクが、こんな感じに表示される。


なお、実際にページランクの表示ツールのようなものを公開する時には、同じURLのGoogleへのページランクの問い合わせは、Googleサーバーへの問い合わせ負荷軽減のため、数日に1回とかに押さえるとか、

また、上記スクリプトでは、ページランク表示イメージを動的に画像を作成していますが、ページランクって、0〜10の11種類しかないので、ページランク0〜10に対応した画像を最初から11種類用意しておいて、表示したいページランクに応じて、対応する画像を読み込んでそのまま表示しする方が負荷は軽いので、そんな感じの工夫などをした方が良いとは思いますが。。。


と、そんなこんなを考えながら、お遊びで作ってみた「Googleページランク表示ブログパーツ」がこちら → ページランク

【補足】他の言語でのページランク取得スクリプトをお探しの方は、キーワード「0x3FFFFC0,0x3FFC00,0x3C000」あたりでGoogleを検索してみましょう。