2014-04-01 39 views
2

我們如何獲取使用谷歌自定義搜索API檢索到的URL內容。 我是新來處理這些API和文檔沒有這樣的示例代碼是可以解釋它。我正在使用google-api-services-customsearch-v1-rev36-1.17.0-rc.jar 這裏是我的代碼。谷歌自定義搜索API:如何獲得搜索結果內容描述(例如片段)的URL

protected Result[] doSearch() { 

    HttpRequestInitializer httpRequestInitializer = new HttpRequestInitializer(){ 
     @Override 
     public void initialize(HttpRequest request) throws IOException { 
     } 
    }; 

    JsonFactory jsonFactory = new JacksonFactory(); 
    Customsearch csearch = new Customsearch(new NetHttpTransport(), jsonFactory, httpRequestInitializer); 


    Customsearch.Cse.List listReqst = csearch.cse().list(query.getQueryString()); 
    listReqst.setKey(GOOGLE_KEY); 
    // set the search engine ID got from API console 
    listReqst.setCx("SEARCH_ENGINE_ID"); 

    // set the query string 
    listReqst.setQ(query); //query contains search query string 

    // language chosen is English for search results 
    listReqst.setLr("lang_en"); 
    // set hit position of first search result 
    listReqst.setStart((long) firstResult); 
    // set max number of search results to return 
    listReqst.setNum((long) maxResults); 

    Search result = list.execute(); 
    // perform search 
} 

此後需要獲取相應網站的摘錄和網址。我必須在這個函數中返回。我們如何檢索它們。所以
https://developers.google.com/resources/api-libraries/documentation/customsearch/v1/java/latest/com/google/api/services/customsearch/model/Search.html

,以獲取URL和內容片段在每個:

回答

1

在你的代碼的最後一行是執行查詢,返回結果,並將其解析成「搜索」的對象,這裏所描述結果你只是做:

List<Result> results = result.getItems(); 
for (Result r : results) { 
    String url = r.getLink(); 
    String snippet = r.getSnippet(); 
} 

要返回所有結果,按照你上面的功能signiture,你只需要在列表轉換爲數組:

List<Result> results = result.getItems(); 
return results.toArray(new Result[results.size()]); 
+0

感謝您的幫助。我試着用這個清單 results = result.getItems();但得到此錯誤: 類型Customsearch.Cse.List不是通用的;它不能用參數參數化。在快速修復中,它要求刪除參數。 – user2696955

+0

我很困惑你的評論 - 該行應該是好的。你確定你正在使用正確的'List':java.util.List? – Tom

+0

yup錯誤已修復。它是由於List進口的碰撞而發生的。 它被寫爲 java.uti.List results = result.getItems(); – user2696955