gpt4 book ai didi

java - Google 自定义搜索 API,如何使用 Java 以编程方式遍历 google 结果页面?

转载 作者:行者123 更新时间:2023-12-01 05:15:29 24 4
gpt4 key购买 nike

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

最佳答案

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

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

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

关于java - Google 自定义搜索 API,如何使用 Java 以编程方式遍历 google 结果页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com