没有配额的JSON搜索引擎API列表,比如Bing?

时间:2011-11-10 21:12:56

标签: search-engine google-search bing

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

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

还有其他服务,例如Bing的JSON API,没有Google的API等查询限制吗?

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

3 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:5)

我认为http://www.faroo.com/可能会帮助你。它每月限制为100万次搜索限制。

答案 2 :(得分: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());
    }