Python實現擷取網站PR及百度權重

來源:互聯網
上載者:User
上一次我用requests庫寫的一個抓取頁面中連結的簡單代碼,延伸一下,我們還可以利用它來擷取我們網站的PR以及百度權重。原理差不多。最後我們甚至可以寫一個迴圈批量查詢網站的相關資訊。

先說說GooglePR,全稱PageRank。它是Google官方給出的評定一個網站SEO的評級,這個大家應該不陌生。既然是官方給出的,當然有一個官方的介面去擷取它。我們這裡就利用官方的介面擷取GooglePR。

代碼如下:


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這個函數只是個演算法,算出一個網域名稱類似hash值的一個東西並返回。可以不去管它是怎麼實現的,我們主要看getPR這個函數。我們google官方給出的介面是這個:http://toolbarqueries.google.com/tbr?client=navclient-auto&ch={HASH}&features=Rank&q=info:{網域名稱}

{HASH}這裡我們就使用google_hash()這個函數,傳入網域名稱,返回它對應的HASH值。比如我們離別歌的網域名稱www.leavesongs.com,它的GoogleHASH是8b1e6ad00,於是構造出來的諮詢網址是:http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=8b1e6ad00&features=Rank&q=info:www.leavesongs.com

訪問它,得到Rank_1:1:0。第二個引號後面的數字是PR,因為我的站是沒有PR的,所以PR為0.

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

以上是getPR這個函數的執行過程。再看擷取百度權重的過程。

百度權重並不是百度官方給的一個標準,是一些第三方網站計算的一個值,所以並沒有像PR一樣的介面。所以我們就需要抓取這些第三方網站中的資訊了。下面是擷取百度權重的函數:

代碼如下:


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'(.+?)(\d*?)()',data,re.I)
return rex.group(2)
except :
return None

使用方法也是傳入網域名稱,返回權重值。

我抓取的是站長工具的一個權重諮詢的頁面:http://mytool.chinaz.com/baidusort.aspx?host={網域名稱}&sortType=0

我的正則就是它:(.+?)(\d*?)(),大家可以自己查看原始碼看一下,就知道正則怎麼寫了。

好了,我們來批量擷取一下這些網站的PR和權重:

直接看結果:

單一一個進程掃的話速度會略慢,開10個20個線程批量擷取的話應該比較快。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.