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

标签 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.aspx?Appid=" + Appid + "&query=" + query + "&sources=web"))
totalResults = soup.find('web:total').text

所以我想在几千个搜索词中执行此操作,并且想知道是否

  1. 执行此请求一千次将被视为攻击服务器,
  2. 我应该采取什么步骤来避免破坏所述服务器(什么是最佳实践?),以及
  3. 是否有更便宜的(数据)方式使用任何主要搜索引擎 API 来执行此操作?

获取所有数据只是为了每个关键字获取一个数字似乎不必要地昂贵,我想知道我是否遗漏了什么。

FWIW,在决定使用 Bing API 之前,我做了一些功课并尝试了 Google 搜索 API(已弃用)和 Yahoo 的 BOSS API(即将弃用并替换为付费服务)。我知道直接抓取页面被认为是糟糕的形式,所以我将继续直接抓取搜索引擎。

最佳答案

当我不得不进行大规模 URL 解析时,我可以想到三种方法。

  1. HTTP Pipelining (另一个片段 here )
  2. 对每个 IP 的服务器请求进行速率限制(即每个 IP 每秒只能发出 3 个请求)。可以在这里找到一些建议:How to limit rate of requests to web services in Python?
  3. 通过内部代理服务发出请求,使用 http_proxy 将所有请求重定向到所述服务。然后,该代理服务将遍历一组网络接口(interface)并发出限速请求。您可以使用 Twisted为此。

关于python - 什么是对关键字搜索的结果总数进行数据挖掘的合适方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257288/

相关文章:

python - 如何将 scikit-learn 数据集写入 csv 文件

python - 将 pytz 导入 AWS lambda 函数

python - bs4 未获取所有列表项

java - Google appengine Java 文档搜索,java.lang.IllegalArgumentException : number of documents

Java Web Crawler 用于检索 google 搜索结果

python - 为什么品脱需要单位登记?

android - Django 的 x-www-form-urlencoded 解析

python - 数据不会在文档中解析,但会在 Python 中解析为虚拟数据

python - Web 抓取 - 如何通过 Angular.js 访问以 JavaScript 呈现的内容?

search-engine - Google Search API 与专用搜索引擎