Python實(shí)現(xiàn)獲取網(wǎng)站PR及百度權(quán)重
上一次我用requests庫(kù)寫(xiě)的一個(gè)抓取頁(yè)面中鏈接的簡(jiǎn)單代碼,延伸一下,我們還可以利用它來(lái)獲取我們網(wǎng)站的PR以及百度權(quán)重。原理差不多。最后我們甚至可以寫(xiě)一個(gè)循環(huán)批量查詢網(wǎng)站的相關(guān)信息。
先說(shuō)說(shuō)GooglePR,全稱PageRank。它是Google官方給出的評(píng)定一個(gè)網(wǎng)站SEO的評(píng)級(jí),這個(gè)大家應(yīng)該不陌生。既然是官方給出的,當(dāng)然有一個(gè)官方的接口去獲取它。我們這里就利用官方的接口獲取谷歌PR。
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)造出來(lái)的咨詢網(wǎng)址是:http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=8b1e6ad00&features=Rank&q=info:www.leavesongs.com
訪問(wèn)它,得到Rank_1:1:0。第二個(gè)引號(hào)后面的數(shù)字是PR,因?yàn)槲业恼臼菦](méi)有PR的,所以PR為0.
于是,我們使用requests.get()來(lái)訪問(wèn)我們這個(gè)構(gòu)造好的URL,然后獲得類似Rank_1:1:0這樣的結(jié)果,最后通過(guò)正則或其他方式得到PR值0。
以上是getPR這個(gè)函數(shù)的執(zhí)行過(guò)程。再看獲取百度權(quán)重的過(guò)程。
百度權(quán)重并不是百度官方給的一個(gè)標(biāo)準(zhǔn),是一些第三方網(wǎng)站計(jì)算的一個(gè)值,所以并沒(méi)有像PR一樣的接口。所以我們就需要抓取這些第三方網(wǎng)站中的信息了。下面是獲取百度權(quán)重的函數(shù):
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>),大家可以自己查看源代碼看一下,就知道正則怎么寫(xiě)了。
好了,我們來(lái)批量獲取一下這些網(wǎng)站的PR和權(quán)重:
直接看結(jié)果:
單一一個(gè)進(jìn)程掃的話速度會(huì)略慢,開(kāi)10個(gè)20個(gè)線程批量獲取的話應(yīng)該比較快。
相關(guān)文章
Python通過(guò)cv2讀取多個(gè)USB攝像頭
這篇文章主要為大家詳細(xì)介紹了Python通過(guò)cv2讀取多個(gè)USB攝像頭,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Python DataFrame 設(shè)置輸出不顯示index(索引)值的方法
今天小編就為大家分享一篇Python DataFrame 設(shè)置輸出不顯示index(索引)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑
這篇文章主要介紹了解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05python 安裝庫(kù)幾種方法之cmd,anaconda,pycharm詳解
在python項(xiàng)目開(kāi)發(fā)的過(guò)程中,需要安裝大大小小的庫(kù),本文會(huì)提供幾種安裝庫(kù)的方法,通過(guò)實(shí)例截圖給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下2020-04-04如何使用Flask-Migrate拓展數(shù)據(jù)庫(kù)表結(jié)構(gòu)
這篇文章主要介紹了如何使用Flask-Migrate拓展數(shù)據(jù)庫(kù)表結(jié)構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07使用Python實(shí)現(xiàn)MP4轉(zhuǎn)GIF
在日常生活中,我們經(jīng)常會(huì)遇到需要將 MP4 文件轉(zhuǎn)換為 GIF 文件的需求,本文將介紹一種使用 Python 實(shí)現(xiàn) MP4 轉(zhuǎn) GIF 程序的方法,這種方法簡(jiǎn)單易學(xué),而且完全免費(fèi),需要的可以參考下2023-12-12Python OpenCV實(shí)現(xiàn)攝像頭人臉識(shí)別功能
這篇文章主要介紹了Python OpenCV實(shí)現(xiàn)攝像頭人臉識(shí)別,使用Python 3和OpenCV進(jìn)行攝像頭人臉識(shí)別的基本步驟,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07