Suite à mes recherches pour trouver un script de calcul de Pagerank en python, je souhaitais vous présenter deux pages qui me sont tombées sous les yeux.
Script de vérification de Pagerank en Python :
Ce script permet d’aller chercher la valeur de Pagerank Google d’un site donné en argument. Cela sert pour toutes sortes de choses dans le monde du SEO. La page en question est là :
http://blogmag.net/blog/read/91/Python_code_to_check_your_Google_PageRank
Testé aujourd’hui (1er Juillet 2009), le script fonctionne parfaitement bien. Ceux que j’ai pu trouver en php ne marchaient pas ( google me considère comme un pirate vous savez). Si vous en possédez en PHP, je suis preneur
Script de calcul de PageRank ( Google-like)
La page suivante se base sur un article publié à l’AMS, mais dont le principe ne décrit pas exactement le fonctionnement de Google.
Le script écrit en python tente de reproduire le fonctionnement d’un algorithme de Pagerank. Je ne l’ai pas testé, mais ça peut interesser du monde :
http://www.eioba.com/a69792/the_google_pagerank_algorithm_in_126_lines_of_python
#!/usr/bin/env python # -*- coding: utf-8 -*- # (C) 2008 Fred Cirera # ported in Python from the Ruby code by Vsevolod S. Balashov # http://snippets.dzone.com/posts/show/3284 import urllib2 import re import time import sys from urllib import urlencode from pprint import pprint HOST = "toolbarqueries.google.com" def mix(a, b, c): M = lambda v: v % x100000000 # int32 modulo a, b, c = (M(a), M(b), M(c)) a = M(a-b-c) ^ (c >> 13) b = M(b-c-a) ^ (a << 8) c = M(c-a-b) ^ (b >> 13) a = M(a-b-c) ^ (c >> 12) b = M(b-c-a) ^ (a << 16) c = M(c-a-b) ^ (b >> 5) a = M(a-b-c) ^ (c >> 3) b = M(b-c-a) ^ (a << 10) c = M(c-a-b) ^ (b >> 15) return a, b, c def checksum(iurl): C2I = lambda s: sum(c << 8*i for i, c in enumerate(s[:4])) a, b, c = x9e3779b9, x9e3779b9, xe6359a60 lg = len(iurl) k = while k <= lg-12: a = a + C2I(iurl[k:k+4]) b = b + C2I(iurl[k+4:k+8]) c = c + C2I(iurl[k+8:k+12]) a, b, c = mix(a, b, c) k += 12 a = a + C2I(iurl[k:k+4]) b = b + C2I(iurl[k+4:k+8]) c = c + (C2I(iurl[k+8:])<<8) + lg a, b, c = mix(a, b, c) return c def GoogleHash(value): I2C = lambda i: [i & xff, i >> 8 & xff, i >> 16 & xff, i >> 24 & xff] ch = checksum([ord(c) for c in value]) ch = ((ch % x0d) & 7) | ((ch/7) << 2) return "6%s" % checksum(sum((I2C(ch-9*i) for i in range(20)), [])) def make_url(host, site_url): url = "info:" + site_url params = dict(client="navclient-auto", ch="%s" % GoogleHash(url), ie="UTF-8", oe="UTF-8", features="Rank", q=url) return "http://%s/search?%s" % (host, urlencode(params)) # Where the fun begins if __name__ == "__main__": if len(sys.argv) != 2: url = 'http://www.google.com/' else: url = sys.argv[1] if not url.startswith('http://'): url = 'http://%s' % url # print make_url(HOST, url) req = urllib2.Request(make_url(HOST, url)) try: f = urllib2.urlopen(req) response = f.readline() except Exception, err: print err # print err.read() sys.exit(1) try: rank = re.match(r'^Rank_\d+:\d+:(\d+)', response.strip()).group(1) except AttributeError: print "This page is not ranked" rank = -1 print "PagerRank: %d\tURL: %s" % (int(rank), url)