【问题标题】:Google Custom Search API, how can I traverse google result pages programatically using Java?谷歌自定义搜索 API,如何使用 Java 以编程方式遍历谷歌结果页面?
【发布时间】:2012-07-02 08:20:20
【问题描述】:

以下代码取自:Java code for using google custom search API。它可以正常提取谷歌结果页面中第一页的前 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 的总结果,但他们提到这是估计数字。那么,如何获得这项服务的好处并获得实际的结果数或页面数以便遍历它们?我为每个页面发出新查询没有任何意义。

【问题讨论】:

  • @Pargat:请检查这个问题。

标签: java json parsing google-search-api google-custom-search


【解决方案1】:
  1. 您应该使用 JSON 解析器从结果中提取数据,而不是自己解析结果。

  2. Google 不会针对单个查询一次返回所有结果。如果搜索 Java,大约有 214,000,000 个结果?将它们全部归还将持续几天,而且无论如何您都无法对它们做任何有意义的事情。因此,如果有多个页面,您必须为每个页面执行一个新查询,就像使用浏览器进行 Google 搜索一样。大多数时候,有趣的结果在第一页或第二页。返还更多会浪费资源。

  3. Google 不知道结果的确切数量。它返回一个估计值。计算结果的确切数量太难了。知道有 214,000,001 个结果而不是 214,000,002 个结果并没有任何价值,而且确切的数字无论如何都会立即过时。

【讨论】:

  • 在所有情况下,Google 都没有 214,000,000 个结果。这只是一个估计,最大结果是 100 个结果页面,每个页面 10 个链接。但对我来说,谷歌确实需要对每个页面进行一次查询,这对我来说没有意义。
  • 如果我需要使用 Json 解析器。首先如何获得 Json 结果?
  • JSON 解析器为您将 JSON 字符串转换为对象。不再需要子字符串了。
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 2018-12-19
相关资源
最近更新 更多