Python實(shí)現(xiàn)獲取網(wǎng)站PR及百度權(quán)重
上一次我用requests庫寫的一個(gè)抓取頁面中鏈接的簡單代碼,延伸一下,我們還可以利用它來獲取我們網(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。
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ù):
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)重值。
我抓取的是站長工具的一個(gè)權(quán)重咨詢的頁面: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)該比較快。
相關(guān)文章
Python語法學(xué)習(xí)之進(jìn)程的創(chuàng)建與常用方法詳解
本文我們將學(xué)習(xí)一下在?Python?中去創(chuàng)建并使用多進(jìn)程的方法,可以通過創(chuàng)建多個(gè)進(jìn)程來幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下2022-04-04
python網(wǎng)絡(luò)爬蟲精解之正則表達(dá)式的使用說明
正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯2021-09-09
python實(shí)現(xiàn)SMTP郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)SMTP郵件發(fā)送功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Python字典創(chuàng)建 遍歷 添加等實(shí)用基礎(chǔ)操作技巧
字段是Python是字典中唯一的鍵-值類型,本文講述了Python中字典如何創(chuàng)建 遍歷 添加等實(shí)用基礎(chǔ)操作技巧,內(nèi)容非常基礎(chǔ)但非常重要,一定要熟練掌握2018-09-09
Python+Pygame實(shí)現(xiàn)彩色五子棋游戲
這篇文章主要為大家詳細(xì)介紹了如何溧陽Python和Pygame實(shí)現(xiàn)彩色五子棋游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-02-02
python 計(jì)算一個(gè)字符串中所有數(shù)字的和實(shí)例
今天小編就為大家分享一篇python 計(jì)算一個(gè)字符串中所有數(shù)字的和實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
python學(xué)習(xí)之subprocess模塊詳解
這篇文章主要介紹了python學(xué)習(xí)之subprocess模塊的相關(guān)資料,該模塊用于創(chuàng)建子進(jìn)程并與其進(jìn)行交互,它提供了多個(gè)函數(shù)和類來執(zhí)行操作系統(tǒng)命令、獲取命令輸出以及管理子進(jìn)程的生命周期,需要的朋友可以參考下2024-12-12
Python pkg_resources模塊動(dòng)態(tài)加載插件實(shí)例分析
當(dāng)編寫應(yīng)用軟件時(shí),我們通常希望程序具有一定的擴(kuò)展性,額外的功能——甚至所有非核心的功能,都能通過插件實(shí)現(xiàn),具有可插拔性。特別是使用 Python 編寫的程序,由于語言本身的動(dòng)態(tài)特性,為我們的插件方案提供了很多種實(shí)現(xiàn)方式2022-08-08

