gpt4 book ai didi

java - 如何以编程方式搜索 Google Java API

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

有谁知道是否以及如何以编程方式搜索 Google - 特别是如果有 Java API 的话?

最佳答案

一些事实:

  1. Google 提供公共(public)搜索网络服务 API,该 API 返回 JSON : http://ajax.googleapis.com/ajax/services/search/webDocumentation here

  2. Java 优惠 java.net.URLjava.net.URLConnection触发并处理 HTTP 请求。

  3. 在 Java 中,可以使用任意 Java JSON API 将 JSON 转换为完整的 Javabean 对象。最好的之一是 Google Gson .

现在算一下:

public static void main(String[] args) throws Exception {
String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String search = "stackoverflow";
String charset = "UTF-8";

URL url = new URL(google + URLEncoder.encode(search, charset));
Reader reader = new InputStreamReader(url.openStream(), charset);
GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);

// Show title and URL of 1st result.
System.out.println(results.getResponseData().getResults().get(0).getTitle());
System.out.println(results.getResponseData().getResults().get(0).getUrl());
}

此 Javabean 类代表 Google 返回的最重要的 JSON 数据(它实际上返回更多数据,但您可以作为练习来相应地扩展此 Javabean 代码):

public class GoogleResults {

private ResponseData responseData;
public ResponseData getResponseData() { return responseData; }
public void setResponseData(ResponseData responseData) { this.responseData = responseData; }
public String toString() { return "ResponseData[" + responseData + "]"; }

static class ResponseData {
private List<Result> results;
public List<Result> getResults() { return results; }
public void setResults(List<Result> results) { this.results = results; }
public String toString() { return "Results[" + results + "]"; }
}

static class Result {
private String url;
private String title;
public String getUrl() { return url; }
public String getTitle() { return title; }
public void setUrl(String url) { this.url = url; }
public void setTitle(String title) { this.title = title; }
public String toString() { return "Result[url:" + url +",title:" + title + "]"; }
}

}

###另请参阅:

<小时/>

更新自 2010 年 11 月(上述答复后 2 个月)以来,公共(public)搜索网络服务已弃用(提供该服务的最后一天是 9 月) 2014 年 29 日)。您现在最好的选择是查询 http://www.google.com/search直接与诚实的用户代理一起使用,然后使用 HTML parser 解析结果。如果省略用户代理,则会返回 403。如果您在用户代理中模拟 Web 浏览器(例如 Chrome 或 Firefox),那么您会得到更大的 HTML 响应,这会浪费带宽和性能。

这是一个使用 Jsoup 的启动示例作为 HTML 解析器:

String google = "http://www.google.com/search?q=";
String search = "stackoverflow";
String charset = "UTF-8";
String userAgent = "ExampleBot 1.0 (+http://example.com/bot)"; // Change this to your company's name and bot homepage!

Elements links = Jsoup.connect(google + URLEncoder.encode(search, charset)).userAgent(userAgent).get().select(".g>.r>a");

for (Element link : links) {
String title = link.text();
String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");

if (!url.startsWith("http")) {
continue; // Ads/news/etc.
}

System.out.println("Title: " + title);
System.out.println("URL: " + url);
}

关于java - 如何以编程方式搜索 Google Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281159/

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