我想展示一些自定义搜索结果。
我已经查看了谷歌和微软(必应)的JSON API。不幸的是,谷歌对每天的查询次数有限制(最多一万次查询需要支付50美元)。然而,Bing允许每天进行“无限”次查询,且免费。
是否还有其他像Bing的JSON API一样没有像谷歌API那样的查询限制的服务呢?
另一个相关的问题可能是,像Metacrawler这样的服务如何可以结合几个搜索引擎的搜索结果,而这些引擎的服务条款明确指出,这些结果只能通过(付费的)API获取,而不能通过网络爬虫获取。
我想展示一些自定义搜索结果。
我已经查看了谷歌和微软(必应)的JSON API。不幸的是,谷歌对每天的查询次数有限制(最多一万次查询需要支付50美元)。然而,Bing允许每天进行“无限”次查询,且免费。
是否还有其他像Bing的JSON API一样没有像谷歌API那样的查询限制的服务呢?
另一个相关的问题可能是,像Metacrawler这样的服务如何可以结合几个搜索引擎的搜索结果,而这些引擎的服务条款明确指出,这些结果只能通过(付费的)API获取,而不能通过网络爬虫获取。
通常服务和API会有使用阈值,以便于进行实验和小规模使用而不受任何障碍和前期障碍的限制,但是可以通过付费使用开放更好的SLA和附加选项来为需要该级别支持的应用提供可能性。
话虽如此,在 programmableweb.com 上搜索API可能是一个有趣的选择 - 可以查看 http://www.programmableweb.com/apis/directory/1?apicat=Search。
我也很好奇,你具体在寻找什么功能,希望在Bing API中看到什么等等。有任何反馈,请告诉我,我可以转达给团队(因为我是Bing团队的一员)。
我和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());
}