新手程序员和潜伏者在这里,希望得到一些明智的建议。 :)
结合使用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
所以我想在几千个搜索词中做到这一点,并想知道是否
获取所有数据只是为了获取每个关键字的一个数字似乎不必要的昂贵,我想知道我是否遗漏了任何东西。
FWIW,我做了一些功课,尝试了Google Search API(已弃用)和Yahoo的BOSS API(很快就会弃用并替换为付费服务),然后再使用Bing API。我知道直接抓取页面被认为是不好的形式,所以我将直接传递搜索引擎。
答案 0 :(得分:1)
当我不得不进行大规模的URL解析时,我能想到的有三种方法已经有所帮助。
http_proxy
将所有请求重定向到所述服务。然后,该代理服务将迭代一组网络接口并发出速率受限的请求。您可以使用Twisted。答案 1 :(得分:0)
关于您的问题1,Bing有API Basics PDF file以人类可读的形式总结了条款和条件。在“你必须做什么”部分。这包括以下声明:
将您的使用限制在7以下 每个IP的每秒查询数(QPS) 地址。你可能被允许 在某些情况下超过此限制 条件,但必须得到批准 通过讨论 api_tou@microsoft.com。
如果这只是一个一次性的脚本,那么除了在发出请求之间添加sleep
之外,您不需要做任何更复杂的事情,这样您每秒只需要几个请求。如果情况更复杂,例如这些请求是作为Web服务的一部分提出的,Mahmoud Abdelkader's answer中的建议可以为您提供帮助。