2013-03-30 64 views
0

我正在研究需要Google的結果的Java應用程序。所以我用這個頁面上的第一個答案給出的幫助search Google Programmatically Java API僅使用Java搜索Google結果而不使用URL

從成功運行這個程序我得到URL的地方,我得到了我的結果這沒關係。

但我需要解釋搜索的查詢,而不是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 + "]"; } 
    } 

} 
+0

你可以發表一些代碼,說明你迄今爲止做了什麼嗎? – austin

+0

你能舉一個真實查詢的例子嗎? – NilsH

+0

@NilsH如圖所示Answer.java第三行我的查詢是「stackoverflow」我需要解釋駐留在網頁中,而不是僅當前提供的url。 – Aniket

回答

1

如果你在瀏覽器中粘貼search URL,你可以看到JSON結果是如何被格式化。您的GoogleResult類將此JSON的屬性映射到此類中的屬性。爲了從搜索結果中提取更多信息,您可以將恰當的屬性添加到您的類中,並且應該由JSON解析器處理,將JSON結果轉換爲GoogleResult類。所以,如果content從JSON結果是「解釋」你要找的,你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結果中提取任何數據。

+0

感謝朋友@NilsH得到了我的結果..... – Aniket