Python ile Pagerank Değeri Almak

Başlatan mami96, 30 Nisan 2011 - 21:32:14

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mami96

S.A. Ubuntu altinda yine bir kac sey deniyordum. PHP ile pagerank değerini alan bir betik kodlamistim. Bunu C++ içinde denemiştim. Ancak tam bir bilgiye haiz olmadığım için başaramadım. Sonra aynısını Python için deneyeyim dedim... Şu an bulduğum bu değerler gerçekçi değerler. Tam sonucu veriyor... Kısacası gelişime açık bir betiği sizinle paylaşayım...



import urllib

def pagerank_getir(url):
    hsh = check_hash(hash_url(url))
    google_adres = 'http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)
    try:
        f = urllib.urlopen(google_adres)
        rank = f.read().strip()[9:]
    except Exception:
        rank = 'N/A'
    if rank == '':
        rank = '0'
    return rank

def  say_yaz(dizi, tam, faktor):
    for i in range(len(dizi)) :
        tam *= faktor
        tam &= 0xFFFFFFFF
        tam += ord(dizi[i])
    return tam

def hash_url(dizi):
    c1 = say_yaz(dizi, 0x1505, 0x21)
    c2 = say_yaz(dizi, 0, 0x1003F)

    c1 >>= 2
    c1 = ((c1 >> 4) & 0x3FFFFC0) | (c1 & 0x3F)
    c1 = ((c1 >> 4) & 0x3FFC00) | (c1 & 0x3FF)
    c1 = ((c1 >> 4) & 0x3C000) | (c1 & 0x3FFF)

    t1 = (c1 & 0x3C0) << 4
    t1 |= c1 & 0x3C
    t1 = (t1 << 2) | (c2 & 0xF0F)

    t2 = (c1 & 0xFFFFC000) << 4
    t2 |= c1 & 0x3C00
    t2 = (t2 << 0xA) | (c2 & 0xF0F0000)

    return (t1 | t2)

def check_hash(hash_int):
    hash_str = '%u' % (hash_int)
    flag = 0
    check_byte = 0

    i = len(hash_str) - 1
    while i >= 0:
        byte = int(hash_str[i])
        if 1 == (flag % 2):
            byte *= 2;
            byte = byte / 10 + byte % 10
        check_byte += byte
        flag += 1
        i -= 1

    check_byte %= 10
    if 0 != check_byte:
        check_byte = 10 - check_byte
        if 1 == flag % 2:
            if 1 == check_byte % 2:
                check_byte += 9
            check_byte >>= 1

    return '7' + str(check_byte) + hash_str

if __name__ == '__main__':
    site_adresi=raw_input("Lutfen Site Adresinizi Giriniz: ")
    print pagerank_getir("\n"+site_adresi)
raw_input("")