1

次のコードから取得:googleカスタム検索APIを使用するためのJavaコード。グーグルの結果ページの最初のページの最初の10件の結果を抽出することは正しく機能します。

public static void main(String[] args) throws Exception {      
String key="YOUR KEY";     
String qry="Android";     
URL url = new URL("https://www.googleapis.com/customsearch/v1?
key="+key+ "&cx=013036536707430787589:_pqjad5hr1a&q="+ qry + "&alt=json");     

HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
conn.setRequestMethod("GET");     
conn.setRequestProperty("Accept", "application/json");     
BufferedReader br = 
new BufferedReader(new InputStreamReader( (conn.getInputStream())));      
String output;     
System.out.println("Output from Server .... \n");     
while ((output = br.readLine()) != null) 
 {          
    if(output.contains("\"link\": \""))
    {                             
     String link=output.substring(output.indexOf("\"link\": \"")+
     ("\"link\": \"").length(), output.indexOf("\","));             
     System.out.println(link);       //Will print the google search links         
    }          
 }     
conn.disconnect();                               
}

すべての結果ページをトラバースするにはどうすればよいですか?https://developers.google.com/custom-search/v1/using_restで検索すると、クエリのstartパラメーターがインデックスを参照していることがわかりました。ループでこの値を変更することで、目的が達成されることは明らかです。 、ただし、ページごとにクエリのコストがかかります(これは、新しいクエリではないため、同じクエリですが、新しいページであるため、そうではないはずです)。また、グーグルがクエリが成功した場合、応答データにはtotalResults合計結果の値が含まれていると述べていることがわかりましたが、それは推定数であると彼らは述べています。では、どのようにしてこのサービスの恩恵を受け、それらすべてをトラバースするために実際の結果数またはページ数を取得することができますか?すべてのページに新しいクエリを発行しても意味がありません。

4

1 に答える 1

0
  1. 結果を自分で解析するのではなく、JSONパーサーを使用して結果からデータを抽出する必要があります。

  2. Googleは、1つのクエリに対して一度にすべての結果を返すわけではありません。Javaを検索すると、約214,000,000件の結果がありますか?それらをすべて返すことは数日続くでしょう、そしてあなたはとにかくそれらで意味のあることを何もすることができませんでした。したがって、複数のページがある場合は、ブラウザでGoogle検索を実行する場合と同様に、ページごとに新しいクエリを実行する必要があります。ほとんどの場合、興味深い結果は1ページ目または2ページ目にあります。それ以上を返すと、リソースが無駄になります。

  3. Googleは結果の正確な数を知りません。見積もりを返します。結果の正確な数を数えるのは難しいでしょう。214,000,001の結果があり、214,000,002の結果がないことを知っていても、値は表示されません。正確な数は、とにかくすぐに廃止されます。

于 2012-07-08T21:27:13.077 に答える