web-dev-qa-db-ja.com

BingのようなクォータのないJSON検索エンジンAPIのリスト?

カスタム検索結果を表示したいのですが。

GoogleとMicrosoft(Bing)の両方のJSONAPIを見てきました。残念ながら、Googleには1日あたりのクエリ数に制限があります(最大1万クエリに対して$ 50)。ただし、Bingでは、1日に「無制限」のクエリを無料で許可しています。

BingのJSONAPIのように、GoogleのAPIのようにクエリ制限がない他のサービスはありますか?

関連する質問は、Metacrawlerのようなサービスが複数の検索エンジンからの検索結果をどのように組み合わせることができるかということかもしれませんが、これらのエンジンのサービス条件では、これらの結果はクロールではなく、そのような(有料の)APIを介してのみ取得できると明確に述べられています。

24
Tom

通常、サービスとAPIには使用量のしきい値があり、ハードルや事前の障害なしに実験と小規模な使用を可能にしますが、より良いSLAおよび有料の使用法で追加のオプションを提供する可能性を開きますそのレベルのサポートを必要とするアプリの場合。

つまり、programmableweb.comで検索APIを探すことは、おそらく興味深いオプションです。 http://www.programmableweb.com/apis/directory/1?apicat=Search を参照してください。

また、機能の観点から具体的に何を求めているのか、Bing APIに何を表示したいのかなど、興味があります。フィードバックがあれば、チームに伝えることができます(Bingチームに所属しているため)。

15
Nikhil Kothari

私は http://www.faroo.com/ があなたを助けるかもしれないと思います。 1か月あたりの検索数は100万回に制限されています。

5
raghu

私は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());
    }
2
user584397