3

新手程序員和潛伏者在這裏,希望得到一些明智的建議。 :)什麼是數據挖掘關鍵字搜索結果總數的適當方法?

使用Python,BeautifulSoup和冰API的組合,我能找到我想要的東西用下面的代碼:

import urllib2 
from BeautifulSoup import BeautifulStoneSoup 

Appid = #My Appid 
query = #My query 

soup = BeautifulStoneSoup(urllib2.urlopen("http://api.search.live.net/xml.aspx?Appid=" + Appid + "&query=" + query + "&sources=web")) 
totalResults = soup.find('web:total').text 

所以我想跨越幾個做到這一點我應該採取不錘哪些步驟千個搜索詞,並想知道如果

  1. 這樣要求一千倍會被理解爲錘擊服務器,
  2. 表示服務器(最佳做法有哪些?),和
  3. 有沒有更便宜的(數據)方式來使用任何主要的搜索引擎API來做到這一點?

抓住所有這些數據只是爲了獲得每個關鍵字的一個數字並且我在想我是否錯過了任何東西。

FWIW,我做了一些家庭作業,並嘗試谷歌搜索API(不贊成使用)和雅虎的BOSS API(很快將被棄用並替換爲付費服務),然後與Bing API解決。我知道直接抓取頁面被認爲是糟糕的形式,所以我會直接通過搜索引擎來傳遞。

回答

0

對於您的問題1,Bing有一個API Basics PDF file,它以人可讀的形式總結了條款和條件。在「你必須做的」部分。這包括以下語句:

限制您的使用情況,以每秒(QPS)每個IP少於7個 查詢 地址。在某些 條件下,您可能被允許 超過此限制,但必須通過與 [email protected]的討論批准 。

如果這僅僅是一個一次性的腳本,你不需要做任何事情不僅僅是增加一個sleep發出請求之間更復雜,讓你讓一對夫婦只請求第二。如果情況更復雜,例如這些請求正在作爲Web服務的一部分提出,Mahmoud Abdelkader's answer中的建議應該對您有所幫助。

+0

謝謝這就是我需要的一切(一次性研究請求)。 :-)欣賞你們給出的答案! – binarysolo 2011-03-10 20:33:10

1

有三種方法可以幫助我以前在需要大規模URL解析時提供幫助。

  1. HTTP Pipelining(另一片斷here
  2. 每個IP速率限制服務器的請求(即,每個IP只能問題3個請求/秒)。一些建議可以在這裏找到:How to limit rate of requests to web services in Python?
  3. 通過內部代理服務發出請求,使用http_proxy將所有請求重定向到所述服務。然後,這個代理服務將迭代一組網絡接口併發出限速請求。你可以使用Twisted
+0

謝謝,這是一個比我需要更復雜的答案,但我真的很感謝幫助。 :-)如果我想要做一些很酷的事情,將來會很有用。 – binarysolo 2011-03-10 20:34:11