2017-04-02 4 views
1

結果リンクがビンをリダイレクトするのではなく、正確なリンクを表示する方法はありますか?ビング認知検索、URLの実際のサイト、ビンリダイレクトではない

たとえば、リダイレクトの代わりに実際のリンクを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 ..." 
     } 
     ]` 

URLは実際のリンクですか?

答えて

0

私たちが見つけた唯一の方法は、ちょうどdisplayUrlから<b></b>を削除することです...

+0

はい、それがフロントエンドURLです。表示するには、それは完全なURLパスではないかもしれません.... –

1

あなたはリダイレクトが指されている正確なURLを取得するには、URLには「r =」クエリパラメータを使用することができます。サンプルビング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" 

のようなURLがエンコードされていることを

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; 
} 
+0

クール、私はそれを参照してください、しかし、これはサービスのbingの条件に違反しないだろうか?これであなたの経験は何ですか? –

+0

Bing Search APIの使用要件と表示要件については、https://docs.microsoft.com/en-gb/azure/cognitive-services/bing-web-search/useanddisplayrequirementsに記載されていますが、他の要件に違反しないように再フォーマットする以外)**データ収集用のリダイレクトURLを使用するため、 –

関連する問題