java如何获取含ajax的网页数据
问题是这样的,我需要获取一个网页的信息,但该网页上有个“显示更多”按钮用了ajax,要点击它才能得到完整数据。有人说用robot+jsoup,但我不知道是否可行,robo...
问题是这样的,我需要获取一个网页的信息,但该网页上有个“显示更多”按钮用了ajax,要点击它才能得到完整数据。有人说用robot+jsoup,但我不知道是否可行,robot模拟用户点击后没有得到新的网址,此时即使用Jsoup来连接网站我觉得显示的应该还是原始的内容。请问大家有什么办法吗?
展开
展开全部
晕死你了,你都知道ajax,都不知道怎么用么? ajax就是异步交互,页面不刷新加载数据啊。你在ajax里面提交获取数据的Action或者url(实际上就是action)action里面返回json数据,最后在ajax的回调函数里面解析json数据,再用dom显示在html上
更多追问追答
追问
你好,谢谢回答。我的问题是怎么用java获取加载后的页面上的数据。
追答
那你这问题就有问题,用java获取页面数据? 随便怎样你得先提交页面数据,后台才获取啊,不可能说服务器端一直把每个打开网页的用户端的页面数据都获取到吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-27
展开全部
/**
* 获取某个网页的内容
* @param url 网页的地址
* @param code 网页的编码,不传就代表UTF-8
* @return 网页的内容
* @throws IOException
*/
public static String fetch_url(String url, String code) throws IOException {
BufferedReader bis = null;
InputStream is = null;
InputStreamReader inputStreamReader = null;
try {
URLConnection connection = new URL(url).openConnection();
connection.setConnectTimeout(20000);
connection.setReadTimeout(20000);
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11");
is = connection.getInputStream();
inputStreamReader = new InputStreamReader(is, code);
bis = new BufferedReader(inputStreamReader);
String line = null;
StringBuffer result = new StringBuffer();
while ((line = bis.readLine()) != null) {
result.append(line);
}
return result.toString();
} finally {
if (inputStreamReader != null) {
try {
inputStreamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
* 获取某个网页的内容
* @param url 网页的地址
* @param code 网页的编码,不传就代表UTF-8
* @return 网页的内容
* @throws IOException
*/
public static String fetch_url(String url, String code) throws IOException {
BufferedReader bis = null;
InputStream is = null;
InputStreamReader inputStreamReader = null;
try {
URLConnection connection = new URL(url).openConnection();
connection.setConnectTimeout(20000);
connection.setReadTimeout(20000);
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11");
is = connection.getInputStream();
inputStreamReader = new InputStreamReader(is, code);
bis = new BufferedReader(inputStreamReader);
String line = null;
StringBuffer result = new StringBuffer();
while ((line = bis.readLine()) != null) {
result.append(line);
}
return result.toString();
} finally {
if (inputStreamReader != null) {
try {
inputStreamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询