【问题标题】:List of JSON search engine APIs without quotas, like Bing? [closed]没有配额的 JSON 搜索引擎 API 列表,例如 Bing? [关闭]
【发布时间】:2011-12-26 13:07:39
【问题描述】:

我想显示一些自定义搜索结果。

我查看了 Google 和 Microsoft (Bing) 的 JSON API。不幸的是,谷歌对每天的查询量有限制(最多 50 美元,一万次查询)。但是,Bing 每天允许“无限”数量的免费查询。

是否有其他服务(例如 Bing 的 JSON API)没有像 Google 的 API 那样的查询限制?

一个相关的问题可能是像 Metacrawler 这样的服务如何组合来自多个搜索引擎的搜索结果,而这些引擎的服务条款明确规定这些结果只能通过此类(付费)API 获得,而不是通过抓取获得。

【问题讨论】:

标签: search-engine google-search bing


【解决方案1】:

通常服务和 API 具有使用阈值,以便在没有任何障碍和前期障碍的情况下进行实验和小规模使用,但为需要该级别的应用提供更好的 SLA 和付费使用的附加选项的可能性支持。

也就是说,在programmableweb.com 上查找搜索API 可能是一个有趣的选择——请参阅http://www.programmableweb.com/apis/directory/1?apicat=Search

我也很好奇,您在功能方面特别寻找什么,您希望在 Bing API 中看到什么等。任何反馈,我都可以转达给团队(因为我是 Bing 团队的一员)。

【讨论】:

  • NikhilK,感谢您的回复。我在使用 Bing API 时遇到的最大问题是,结果似乎与普通 bing 搜索站点返回的结果相比不太相关。例如,如果我搜索“nu.nl papandreou”,我希望它会返回许多与网站 nu.nl 上的 papandreou 相关的结果。相反,我得到了一个很少访问的投资者网站,该网站恰好链接到 nu.nl,并且其他人恰好在该网站上谈论 Papandreou。
  • 同意。与 Web 结果相比,API 结果很糟糕。结果没有理由不同。此外,某些使用条款有些限制性。
【解决方案2】:

我在使用 bing 时遇到了同样的问题,所以我正在尝试另一种解决方案。 我正在尝试像人类一样解析他们的 HTML 内容。他们网站的 HTML 有一些限制,所以我抓取了他们的移动版本。

如果有的话,那是我在 java 中使用的代码(使用 Jsoup 和 apache http 组件):

    DefaultHttpClient client = new DefaultHttpClient();
    client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101 Firefox/9.0.1");
    client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES);

    int page = 0;
    String surl = "http://m.bing.com/search/search.aspx?A=webresults&Q=" + URLEncoder.encode("site:www.facebook.com/ +\"?sk=info\"+\"new york\"+\"Bar\"", "UTF-8") + "&D=Web&SI=" + (page * 10) + "&PN=" + (page);
    HttpGet get = new HttpGet(surl);
    InputStream content = client.execute(get).getEntity().getContent();
    Document doc = Jsoup.parse(content, "UTF-8", "http://www.bing.com/");
    Elements elements = doc.select(".s15 a");
    for (Element e : elements) {
        String url = e.attr("href");
        int v = url.indexOf("REDIRURL=");
        if (v > 0) {
            url = url.substring(v + 9);
            url = url.substring(0, url.indexOf("&"));
            url = URLDecoder.decode(url, "UTF-8");
        } else {
            break;
        }
        System.out.println(url + " : " + e.text());
    }

【讨论】:

  • 您是否知道 Microsoft 是否检测到同一 IP 地址是否在特定时间范围内请求大量搜索作业?例如,Google 会发出验证码。
【解决方案3】:

我认为http://www.faroo.com/ 可以帮助您。它有每月 100 万次搜索的限制。

【讨论】:

  • FAROO 看起来不错,但对结果没有太多控制力,查询的唯一 supported operatorAND(关键字)。
  • 对某些人来说可能会破坏交易,但 Faroo 也需要注册 API 密钥。
  • Faroo 的另一个交易破坏者是您的 API 密钥仅限于您在注册期间指定的 IP 地址。
猜你喜欢
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 2020-09-12
相关资源
最近更新 更多