2009-10-09 56 views
2

我正在使用ajax google API搜索字符串,對谷歌。它將所有包含文本標籤的HTML文件返回給我。僅使用Java搜索文本

如果我只想得到文本,我應該使用什麼?

我的程序是用Java編寫的。

問候

Manjot

回答

2

我做了一些谷歌上搜索,發現這個:

http://www.ajaxlines.com/ajax/stuff/article/using_google_is_ajax_search_api_with_java.php

下面是從那裏的示例代碼片段:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLEncoder; 
import org.json.JSONArray;  // JSON library from http://www.json.org/java/ 
import org.json.JSONObject; 

public class GoogleQuery { 

// Put your website here 
private final String HTTP_REFERER = "http://www.example.com/"; 

public GoogleQuery() { 
    makeQuery("questio verum"); 
    makeQuery("info:http://frankmccown.blogspot.com/"); 
    makeQuery("site:frankmccown.blogspot.com"); 
} 

private void makeQuery(String query) { 

    System.out.println(" Querying for " + query); 

    try 
    { 
    // Convert spaces to +, etc. to make a valid URL 
    query = URLEncoder.encode(query, "UTF-8"); 

    URL url = new URL("http://ajax.googleapis.com/ajax/services/search/web?start=0&rsz=large&v=1.0&q=" + query); 
    URLConnection connection = url.openConnection(); 
    connection.addRequestProperty("Referer", HTTP_REFERER); 

    // Get the JSON response 
    String line; 
    StringBuilder builder = new StringBuilder(); 
    BufferedReader reader = new BufferedReader(
    new InputStreamReader(connection.getInputStream())); 
    while((line = reader.readLine()) != null) { 
    builder.append(line); 
    } 

    String response = builder.toString(); 
    JSONObject json = new JSONObject(response); 

    System.out.println("Total results = " + 
    json.getJSONObject("responseData") 
    .getJSONObject("cursor") 
    .getString("estimatedResultCount")); 

    JSONArray ja = json.getJSONObject("responseData") 
    .getJSONArray("results"); 

    System.out.println(" Results:"); 
    for (int i = 0; i < ja.length(); i++) { 
    System.out.print((i+1) + ". "); 
    JSONObject j = ja.getJSONObject(i); 
    System.out.println(j.getString("titleNoFormatting")); 
    System.out.println(j.getString("url")); 
    } 
    } 
    catch (Exception e) { 
    System.err.println("Something went wrong..."); 
    e.printStackTrace(); 
    } 
} 

public static void main(String args[]) { 
    new GoogleQuery(); 
} 
} 

作爲一個側面說明,你應該小心不要違反Google服務條款: 「您明確同意不通過任何自動方式(包括使用腳本或網絡爬蟲)訪問(或嘗試訪問)任何服務,並應確保您遵守任何機器人中的說明.txt「 - http://www.google.com/accounts/TOS

+0

非常感謝 – Manjot 2009-10-23 22:05:51