使用Java搜索Google结果而不是URL

时间:2013-03-30 15:10:36

标签: java

我正在研究java应用程序,我需要Google提供的结果。所以我在本页search Google Programmatically Java API

的第1回答中使用了帮助

从成功运行这个程序后,我得到了URL,我得到了我的结果,这没关系。

但我需要解释搜索到的查询而不是网址。

那么如何从搜索到的查询中获得最终答案,我们非常感谢您的帮助。

Answer.java

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());
}

GoogleResults.java

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 + "]"; }
    }

}

1 个答案:

答案 0 :(得分:1)

如果您在浏览器中粘贴search URL,则可以查看JSON结果的格式。您的GoogleResult类将此JSON中的属性映射到此类中的属性。要从搜索结果中提取更多信息,您只需向类中添加适当的属性,它应由JSON解析器处理,将JSON结果转换为GoogleResult类。因此,如果JSON结果中的content是您要查找的“解释”,那么您的Result类将如下所示:

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

然后,您可以使用result.getContent()来获取搜索结果的说明。您可以使用相同的过程从您想要的JSON结果中提取任何数据。