我正在尝试使用 Java 检索 Google 搜索查询结果的 html。也就是说,如果我在 Google.com 中搜索特定短语,我想检索结果网页的 html(包含指向可能匹配项的链接及其描述、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
}
}
}
}
此代码中使用的 URL 是通过从 Google 主页执行 Google 搜索查询获得的。出于某种原因,我不明白,如果我在 Web 浏览器的 URL 栏中写下要搜索的短语,然后在代码中使用生成的搜索结果页面的 URL,我会收到 403 错误。
但是,此代码没有返回搜索查询结果页面的 html。相反,它返回了 Google 主页的源代码。
经过进一步研究,我注意到如果您查看谷歌搜索查询结果的源代码(通过右键单击搜索结果页面的背景并选择“查看页面源”)并将其与谷歌主页的源代码进行比较, 它们都是相同的。
如果不是查看搜索结果页面的源代码,而是保存搜索结果页面的 html(通过按 ctrl+s),我可以获得我正在寻找的 html。
有没有办法使用 Java 检索搜索结果页面的 html?
谢谢!