2017-04-02 51 views
1

有沒有一種方法,結果鏈接顯示確切的鏈接,而不是重新定向的鏈接?Bing認知搜索,在url中的實際網站,而不是bing重定向

例如有沒有在認知搜索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 ..." 
     } 
     ]` 

這樣的網址是實際的鏈接?

回答

0

我們發現的唯一辦法是剛剛從displayUrl刪除<b></b> ...

+0

是的,但那就是前端網址;被顯示,它可能不是完整的URL路徑,雖然.... –

1

您可以使用「R =」查詢參數的URL,以獲取其中重定向指出確切的網址。樣本兵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編碼。如果需要,請執行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; 
} 
+0

很酷,我明白了,但這不會違反服務條款?你有什麼經驗? –

+0

https://docs.microsoft.com/en-gb/azure/cognitive-services/bing-web-search/useanddisplayrequirements上的必應搜索API使用和顯示要求確實提到您不得修改結果內容(除了以不違反任何其他要求的方式重新格式化它們); **因爲它們使用重定向url進行數據收集。 –