我正在嘗試使用Java檢索Google搜索查詢結果的html。也就是說,如果我在Google.com上搜索特定的短語,我想檢索生成的網頁的HTML(包含指向可能匹配的鏈接及其描述,URL等的網頁)。如何檢索搜索引擎查詢結果的HTML?
我嘗試使用下面的代碼,我在相關的職位找到這樣:How do you Programmatically Download a Webpage in Java
是從做一個谷歌搜索查詢獲得此代碼中使用的URL:從
import java.io.*;
import java.net.*;
import java.util.*;
public class Main {
public static void main (String args[]) {
URL url;
InputStream is = null;
DataInputStream dis;
String line;
try {
url = new URL("https://www.google.com/#hl=en&output=search&sclient=psy-ab&q=UCF&oq=UCF&aq=f&aqi=g4&aql=&gs_l=hp.3..0l4.1066.1471.0.1862.3.3.0.0.0.0.382.1028.2-1j2.3.0...0.0.OxbV2LOXcaY&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=579625c09319dd01&biw=944&bih=951");
is = url.openStream(); // throws an IOException
dis = new DataInputStream(new BufferedInputStream(is));
while ((line = dis.readLine()) != null) {
System.out.println(line);
}
} catch (MalformedURLException mue) {
mue.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
is.close();
} catch (IOException ioe) {
// nothing to see here
}
}
}
}
Google首頁。出於某種原因,我不明白,如果我在我的Web瀏覽器的URL欄中編寫要搜索的短語,然後在代碼中使用生成的搜索結果頁的URL,則會出現403錯誤。
但是,此代碼沒有返回搜索查詢結果頁面的html。相反,它返回了Google主頁的源代碼。
經過深入研究,我發現如果您查看Google搜索查詢結果的源代碼(通過右鍵單擊搜索結果頁面的背景並選擇「查看頁面源代碼」)並將其與源代碼進行比較的Google主頁,它們都是相同的。
如果不是查看搜索結果頁面的源代碼,我保存搜索結果頁面的html(通過按ctrl + s),我可以得到我正在尋找的html。
有沒有辦法使用Java檢索搜索結果頁面的html?
謝謝!
謝謝您的所有信息!我將研究Google API。但是,我想了解爲什麼Java代碼不會返回所需的結果。我使用我使用的代碼更新了原始帖子,並添加了有關如何獲得不會生成403錯誤的網址的說明。我希望這使得它更容易理解。 – Erich
@ Kyndod7不知道你是否收到我的編輯通知 - 但我回答了你的問題:)你爲什麼要以編程方式谷歌搜索我的大學的名字? :) –
非常感謝Alex!當我測試代碼時,我只是隨機選擇UCF,它也是我的大學:) – Erich