我正在尝试使用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