blog.furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Sprawdzanie PageRank w Pythonie

Oto skrypt w pytonie do sprawdzania PageRank dostępny z https://github.com/phurix/pagerank (pagerank2.py), który zmodyfikowałem tak aby zwracało sam numer PR lub '-' jeśli strona nie posiada PageRank. Dodatkowo dzięki name może być od razu wykorzystywany jako samodzielny skrypt do sprawdzania PageRank lub importowany do innych, bardziej rozbudowanych skryptów o czym w następnym razem.

Użycie bezpośrednie:

> python pagerank2.py python.org blog.furas.pl bcocr.pl

python.org 8
blog.furas.pl 1
bcocr.pl -

Użycie w innym skrypcie:

#!/usr/bin/python

import pagerank2

lista = ['python.org', 'blog.furas.pl', 'bcocr.pl']

for i in lista:
    print i, pagerank.GetPR(i)

A oto właściwy skrypt z przeróbkami

#!/usr/bin/env python

# Google Pagerank Checksum Algorithm (Firefox Toolbar)
# Downloaded from http://pagerank.phurix.net/
# Requires: Python >= 2.4

# Versions:
# pagerank2.py 0.2 - Fixed a minor formatting bug
# pagerank2.py 0.1 - Public release

# Settings
prhost='toolbarqueries.google.com'
prpath='/tbr?client=navclient-auto&ch=%s&features=Rank&q=info:%s'

# Function definitions
def GetHash (query):
    SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer."
    Result = 0x01020345
    for i in range(len(query)) :
        Result ^= ord(SEED[i%len(SEED)]) ^ ord(query[i])
        Result = Result >> 23 | Result << 9
        Result &= 0xffffffff
    return '8%x' % Result

def GetPageRank (query):
    import httplib
    conn = httplib.HTTPConnection(prhost)
    hash = GetHash(query)
    path = prpath % (hash,query)
    conn.request("GET", path)
    response = conn.getresponse()
    data = response.read()
    conn.close()
    return data

#EOF

# my modyfication / moje modyfikacje
# Bartlomiej 'furas' Burek - blog.furas.pl - furas@tlen.pl

# taking only PR or '-' if page has no PR
# pobieranie tylko PR lub '-' jesli strona nie posiada PR

def GetPR (query):
    pr = GetPageRank(query).strip().split(':')
    return pr[2] if len(pr) >= 3 else '-'

# cli - checking PR for pages added in command line
# cli - sprawdzanie PR dla adresow podanych w lini komand

if __name__ == '__main__':
    import sys
    for url in sys.argv[1:]:
        print url, GetPR(url)
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury