我想显示一些自定义搜索结果。
我查看了Google和Microsoft(Bing)的JSON API。不幸的是,谷歌每天的查询数量有限制(最多一万次查询需要50美元)。但是,Bing允许"无限制"每天查询量,免费。
还有其他服务,例如Bing的JSON API,没有Google的API等查询限制吗?
一个相关的问题可能是Metacrawler这样的服务如何组合来自多个搜索引擎的搜索结果,而这些引擎的服务条款明确指出这些结果可能只能通过这种(付费)API获得,而不能通过抓取获得。
答案 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());
}