新手程序员和潜伏者,希望得到一些明智的建议。 :)
结合使用 Python、BeautifulSoup 和 Bing 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
所以我想在几千个搜索词中执行此操作,并且想知道是否
- 执行此请求一千次将被视为攻击服务器,
- 我应该采取什么步骤来避免破坏所述服务器(什么是最佳实践?),以及
- 是否有更便宜的(数据)方式使用任何主要搜索引擎 API 来执行此操作?
获取所有数据只是为了每个关键字获取一个数字似乎不必要地昂贵,我想知道我是否遗漏了什么。
FWIW,在决定使用 Bing API 之前,我做了一些功课并尝试了 Google 搜索 API(已弃用)和 Yahoo 的 BOSS API(即将弃用并替换为付费服务)。我知道直接抓取页面被认为是糟糕的形式,所以我将继续直接抓取搜索引擎。
最佳答案
当我不得不进行大规模 URL 解析时,我可以想到三种方法。
- HTTP Pipelining (另一个片段 here )
- 对每个 IP 的服务器请求进行速率限制(即每个 IP 每秒只能发出 3 个请求)。可以在这里找到一些建议:How to limit rate of requests to web services in Python?
- 通过内部代理服务发出请求,使用
http_proxy
将所有请求重定向到所述服务。然后,该代理服务将遍历一组网络接口(interface)并发出限速请求。您可以使用 Twisted为此。
关于python - 什么是对关键字搜索的结果总数进行数据挖掘的合适方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257288/