国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python實(shí)現(xiàn)獲取網(wǎng)站PR及百度權(quán)重

2019-11-25 18:01:39
字體:
供稿:網(wǎng)友

上一次我用requests庫(kù)寫的一個(gè)抓取頁(yè)面中鏈接的簡(jiǎn)單代碼,延伸一下,我們還可以利用它來獲取我們網(wǎng)站的PR以及百度權(quán)重。原理差不多。最后我們甚至可以寫一個(gè)循環(huán)批量查詢網(wǎng)站的相關(guān)信息。

先說說GooglePR,全稱PageRank。它是Google官方給出的評(píng)定一個(gè)網(wǎng)站SEO的評(píng)級(jí),這個(gè)大家應(yīng)該不陌生。既然是官方給出的,當(dāng)然有一個(gè)官方的接口去獲取它。我們這里就利用官方的接口獲取谷歌PR。

復(fù)制代碼 代碼如下:

GPR_HASH_SEED ="Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Y/
es, I'm talking to you, scammer."

def google_hash(value):
    magic = 0x1020345
    for i in xrange(len(value)):
        magic ^= ord(GPR_HASH_SEED[i % len(GPR_HASH_SEED)]) ^ ord(value[i])
        magic = (magic >> 23 | magic << 9) & 0xFFFFFFFF
    return "8%08x" % (magic)

def getPR(www):
    try:
        url = 'http://toolbarqueries.google.com/tbr?' /
        'client=navclient-auto&ch=%s&features=Rank&q=info:%s' % (google_hash(www) , www)
        response = requests.get(url)
        rex = re.search(r'(.*?:.*?:)(/d+)',response.text)
        return rex.group(2)
    except :
        return None

使用方法:傳入域名,返回PR值

google_hash這個(gè)函數(shù)只是個(gè)算法,算出一個(gè)域名類似hash值的一個(gè)東西并返回。可以不去管它是怎么實(shí)現(xiàn)的,我們主要看getPR這個(gè)函數(shù)。我們google官方給出的接口是這個(gè):http://toolbarqueries.google.com/tbr?client=navclient-auto&ch={HASH}&features=Rank&q=info:{域名}

{HASH}這里我們就使用google_hash()這個(gè)函數(shù),傳入域名,返回它對(duì)應(yīng)的HASH值。比如我們離別歌的域名www.leavesongs.com,它的谷歌HASH是8b1e6ad00,于是構(gòu)造出來的咨詢網(wǎng)址是:http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=8b1e6ad00&features=Rank&q=info:www.leavesongs.com

訪問它,得到Rank_1:1:0。第二個(gè)引號(hào)后面的數(shù)字是PR,因?yàn)槲业恼臼菦]有PR的,所以PR為0.

于是,我們使用requests.get()來訪問我們這個(gè)構(gòu)造好的URL,然后獲得類似Rank_1:1:0這樣的結(jié)果,最后通過正則或其他方式得到PR值0。

以上是getPR這個(gè)函數(shù)的執(zhí)行過程。再看獲取百度權(quán)重的過程。

百度權(quán)重并不是百度官方給的一個(gè)標(biāo)準(zhǔn),是一些第三方網(wǎng)站計(jì)算的一個(gè)值,所以并沒有像PR一樣的接口。所以我們就需要抓取這些第三方網(wǎng)站中的信息了。下面是獲取百度權(quán)重的函數(shù):

復(fù)制代碼 代碼如下:

def getBR(www):
    try:
        url = 'http://mytool.chinaz.com/baidusort.aspx?host=%s&sortType=0' % ( www , )
        response = requests.get(url)
        data = response.text
        rex = re.search(r'(<div class="siteinfo">.+?<font.+?>)(/d*?)(</font>)',data,re.I)
        return rex.group(2)
    except :
        return None

使用方法也是傳入域名,返回權(quán)重值。

我抓取的是站長(zhǎng)工具的一個(gè)權(quán)重咨詢的頁(yè)面:http://mytool.chinaz.com/baidusort.aspx?host={域名}&sortType=0

我的正則就是它:(<div class="siteinfo">.+?<font.+?>)(/d*?)(</font>),大家可以自己查看源代碼看一下,就知道正則怎么寫了。

好了,我們來批量獲取一下這些網(wǎng)站的PR和權(quán)重:

直接看結(jié)果:

單一一個(gè)進(jìn)程掃的話速度會(huì)略慢,開10個(gè)20個(gè)線程批量獲取的話應(yīng)該比較快。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桂林市| 和政县| 双鸭山市| 五原县| 黄大仙区| 新疆| 肇东市| 淮阳县| 潼关县| 大厂| 曲周县| 哈尔滨市| 石楼县| 东兰县| 合山市| 林西县| 营山县| 云南省| 张家港市| 济阳县| 贺兰县| 巩留县| 资兴市| 手机| 宁国市| 呼图壁县| 镇赉县| 峡江县| 宝兴县| 柘城县| 天门市| 巫溪县| 株洲县| 公安县| 郸城县| 英吉沙县| 邯郸县| 静乐县| 宜昌市| 柳州市| 大姚县|