2
我正在使用ajax google API搜索字符串,對谷歌。它將所有包含文本標籤的HTML文件返回給我。僅使用Java搜索文本
如果我只想得到文本,我應該使用什麼?
我的程序是用Java編寫的。
問候
Manjot
我正在使用ajax google API搜索字符串,對谷歌。它將所有包含文本標籤的HTML文件返回給我。僅使用Java搜索文本
如果我只想得到文本,我應該使用什麼?
我的程序是用Java編寫的。
問候
Manjot
我做了一些谷歌上搜索,發現這個:
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
非常感謝 – Manjot 2009-10-23 22:05:51