Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是对关键字搜索结果总数进行数据挖掘的适当方法?_Python_Beautifulsoup_Google Search Api_Bing Api_Yahoo Boss Api - Fatal编程技术网

Python 什么是对关键字搜索结果总数进行数据挖掘的适当方法?

Python 什么是对关键字搜索结果总数进行数据挖掘的适当方法?,python,beautifulsoup,google-search-api,bing-api,yahoo-boss-api,Python,Beautifulsoup,Google Search Api,Bing Api,Yahoo Boss Api,新手程序员和潜伏者,希望得到一些明智的建议。:) 结合使用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.

新手程序员和潜伏者,希望得到一些明智的建议。:)

结合使用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,我做了一些准备工作,并尝试了谷歌搜索API(已弃用)和雅虎的BOSS API(很快将弃用并替换为付费服务),然后使用Bing API。我知道直接抓取页面被认为是一种糟糕的形式,所以我将直接放弃抓取搜索引擎。

    我可以想到三种方法,它们在以前我不得不进行大规模URL解析时都有所帮助

  • (另一个片段)
  • 每个IP的服务器请求速率限制(即每个IP每秒只能发出3个请求)。以下是一些建议:
  • 通过内部代理服务发出请求,使用
    http\u proxy
    将所有请求重定向到所述服务。然后,该代理服务将在一组网络接口上迭代,并发出速率受限的请求。你可以用它

  • 关于你的问题1,Bing提供了一个以人类可读的形式总结条款和条件的列表。在“你必须做什么”部分。这包括以下声明:

    将您的使用限制在7以内 每IP每秒查询数(QPS) 地址。你可以被允许 在某些情况下超过此限制 条件,但这必须得到批准 通过与 原料药_tou@microsoft.com.


    如果这只是一个一次性脚本,您不需要做任何比在发出请求之间添加
    sleep
    更复杂的事情,这样您一秒钟只发出几个请求。如果情况更复杂,例如,这些请求是作为web服务的一部分提出的,中的建议应该会对您有所帮助。

    谢谢,这就是我所需要的全部(一次性研究请求)。:-)感谢你们的回答!谢谢,这是一个比我需要的复杂得多的答案,但我真的很感谢你的帮助。:-)如果我想做些酷的事情,这在将来会很有用。