我正在尝试点击URL并从我的Java代码中获取响应。
我正在使用URLConnection来获得此响应。并在html文件中编写此响应。
在执行java类后在浏览器中打开此html时,我只获得谷歌主页而不是结果。
我的代码错误,我的代码在这里,
FileWriter fWriter = null;
BufferedWriter writer = null;
URL url = new URL("https://www.google.co.in/?gfe_rd=cr&ei=aS-BVpPGDOiK8Qea4aKIAw&gws_rd=ssl#q=google+post+request+from+java");
byte[] encodedBytes = Base64.encodeBase64("root:pass".getBytes());
String encoding = new String(encodedBytes);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setDoInput(true);
connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.connect();
InputStream content = (InputStream) connection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String line;
try {
fWriter = new FileWriter(new File("f:\\fileName.html"));
writer = new BufferedWriter(fWriter);
while ((line = in.readLine()) != null) {
String s = line.toString();
writer.write(s);
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
相同的代码可以在几天后使用,但现在不行。
答案 0 :(得分:1)
不建议使用此搜索方法失败,您必须使用google search APIs进行此类工作。
注意: Google使用了一些重定向并使用令牌,所以即使你会找到一种聪明的方法来处理它,它也应该长期失败。
修改强>
这是一个使用Google搜索API的示例,您可以以可靠的方式完成工作;有关详细信息,请参阅source。
public static void main(String[] args) throws Exception {
String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String search = "stackoverflow";
String charset = "UTF-8";
URL url = new URL(google + URLEncoder.encode(search, charset));
Reader reader = new InputStreamReader(url.openStream(), charset);
GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
// Show title and URL of 1st result.
System.out.println(results.getResponseData().getResults().get(0).getTitle());
System.out.println(results.getResponseData().getResults().get(0).getUrl());
}
答案 1 :(得分:1)
原因是此网址不会自行返回搜索结果。您必须了解Google的工作流程才能理解它。在浏览器中打开此URL并查看其来源。你只会在那里看到很多javascript。
实际上,在简短摘要中,Google使用Ajax请求来处理搜索查询。
要执行所需的任务,您必须使用无头浏览器(困难的方式),它可以执行javascript / ajax或更好地使用google search api指示的anand。