2011-11-10 75 views
22

我想顯示一些自定義搜索結果。沒有配額的JSON搜索引擎API列表,比如Bing?

我看過Google和Microsoft(Bing)的JSON API。不幸的是,Google對每天的查詢量有限制(最多一萬條查詢爲50美元)。但是,Bing允許每天免費提供「無限量」的查詢。

像Bing的JSON API這樣的其他服務沒有像Google API那樣的查詢限制嗎?

一個相關的問題可能是像Metacrawler這樣的服務如何合併來自多個搜索引擎的搜索結果,而這些引擎的服務條款明確指出,這些結果可能只能通過此類(付費)API獲得,而不能通過爬行。

+0

嗨,看看http://indexden.com - 這正是你需要的。 –

+5

Bing的搜索API現在不再可用於該級別:https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44 – KFL

回答

14

通常服務和API具有使用閾值,以便實驗和小規模使用,沒有任何障礙和前期障礙,但可以提供更好的SLA和額外的付費使用選項,以滿足需要支持水平。

這就是說在programmableweb.com上查找搜索API可能是一個有趣的選項 - 請參閱http://www.programmableweb.com/apis/directory/1?apicat=Search

我也很好奇,你在功能方面特別尋找什麼,你希望在Bing API中看到什麼等。任何反饋和我都可以傳遞給團隊(因爲我在Bing上球隊)。

+1

NikhilK,感謝您的回覆。我一直在努力使用Bing API的最大問題是,結果似乎與正常的bing搜索網站返回的結果相比沒那麼重要。例如,如果我搜索「nu.nl papandreou」,我希望它會在網站nu.nl上返回許多與papandreou相關的結果。相反,我得到了一個很少訪問的投資者網站,這個網站恰好與nu.nl鏈接,並且其他人恰好談論Papandreou。 – Tom

+1

同意。與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()); 
    } 
+2

您是否知道Microsoft是否檢測到相同的IP地址是否在特定時間範圍內請求了大量的搜索作業?例如,Google會提供驗證碼併發出驗證碼。 – PAX

5

我覺得http://www.faroo.com/可以幫助你。它每月限制100萬次搜索限制。

+2

_FAROO_看起來不錯,但對結果沒有太多的控制水平,只有[支持的操作符](http://www.faroo.com/hp/api/api.html#parameter)對查詢是「AND」 (關鍵字)。 – Alastair

+0

對於某些人來說可能是一個交易破壞者,但是Faroo也需要註冊一個API密鑰。 – lsh

+3

Faroo的另一個交易斷路器是您的API密鑰僅限於註冊時指定的IP地址。 – lsh