Bing认知搜索,url中的实际站点,而不是bing重定向

时间:2017-04-02 22:41:17

标签: bing bing-api microsoft-cognitive web-search bing-search

有没有办法让结果链接显示确切的链接,而不是bing重定向链接?

例如,在认知搜索方面有一种方法可以将href设置为实际链接而不是重定向吗?

`"value": [
 {
     "id": "https://api.cognitive.microsoft.com/api/v5/#WebPages.0",
     "name": "<b>Burrito Recipes</b> - Allrecipes.com",
     "url": "http://www.bing.com/cr?IG=4BE4CA19570B4740ABE2B85782727544&CI......",
     "displayUrl": "all<b>recipes</b>.com/<b>recipes</b>/1216",
     "snippet": "<b>Burrito Recipes</b> ...",
     "deepLinks": [
         {
             "name": "Mexican",
             "url": "http://www.bing.com/cr?IG=4BE4CA19570B4740ABE2BF...",
             "snippet": "Mexican Recipes Find ..."
         }
      ]`

所以网址是实际链接吗?

2 个答案:

答案 0 :(得分:1)

您可以使用&#39; r =&#39;在url中查询参数以获取指向重定向的确切url。一个示例bing url看起来像这样

"url": "http://www.bing.com/cr?IG=584DA9A5C8B245DDA12848B177BAF817&CID=138CDEBD227860443797D43D239D616C&rd=1&h=0UIFjW9hoNBrd0LFRhopxM1IDwbKCHvSc-z-FdLfyMQ&v=1&r=http%3a%2f%2fallrecipes.com%2frecipes%2f1216%2fworld-cuisine%2flatin-american%2fmexican%2fmain-dishes%2fburritos%2f&p=DevEx,5066.1"

下面,

r=http%3a%2f%2fallrecipes.com%2frecipes%2f1216%2fworld-cuisine%2flatin-american%2fmexican%2fmain-dishes%2fburritos%2f

请注意,网址已经过编码。如果需要,执行URL解码。所有这些都可以使用以下Java代码完成。

import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URIBuilder;
import org.apache.log4j.Logger;

import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public static String getExactUrl(String url) {
    Map<String, String> queryParams = getQueryParamsMap(url);
    return queryParams.getOrDefault("r", url);
}

public static Map<String, String> getQueryParamsMap(String url) {
    Map<String, String> queryParamsMap = new HashMap<>();
    try {
        URIBuilder uriBuilder = new URIBuilder(url);
        List<NameValuePair> queryParams = uriBuilder.getQueryParams();
        queryParamsMap = queryParams.stream().collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue));
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    return queryParamsMap;
}

答案 1 :(得分:0)

我们找到的唯一方法是从<b>移除</b>displayUrl ...