何获得浏览器上显示的网页的所有内容
何取得浏览器上显示的网页的所有内容
我使用如下方法:
HttpParams httpParams = new BasicHttpParams();
HttpGet getMethod = new HttpGet(baseUrl);
HttpClient httpClient =new DefaultHttpClient(httpParams);
HttpResponse response = httpClient.execute(getMethod);
用以下代码来取得内容的。
InputStream in = response.getEntity().getContent();
byte[]data = new byte[1024];
int length = 0;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
while((length=in.read(data))!=-1){
bout.write(data,0,length);
}
return new String(bout.toByteArray(),"gb2312"); //, "UTF-8"
取得的内容总是不完整的的。我想取得网页(www.sina.com.cn)所有显示的字符。
为什么?
我应该用什么方法?
俺对网页不熟悉,是不是有什么理解上的问题。
谢谢。
------解决思路----------------------
你的方式是取得的是网页的源码,
而很多内容使用AJAX动态生成的,取不到。
------解决思路----------------------
原因有很多,例如: 一个网页上的显示内容是多次http请求得到的, 有的内容是通过Javascript脚本动态生成的.
要实现这样的功能很难,基本上你在实现一个浏览器.
你看这个思路可行不:在你的程序列内嵌一个开源的浏览器,用这个浏览器来打开网页,等网页打开后,直接通过Javascript获取document.body.innerText
我使用如下方法:
HttpParams httpParams = new BasicHttpParams();
HttpGet getMethod = new HttpGet(baseUrl);
HttpClient httpClient =new DefaultHttpClient(httpParams);
HttpResponse response = httpClient.execute(getMethod);
用以下代码来取得内容的。
InputStream in = response.getEntity().getContent();
byte[]data = new byte[1024];
int length = 0;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
while((length=in.read(data))!=-1){
bout.write(data,0,length);
}
return new String(bout.toByteArray(),"gb2312"); //, "UTF-8"
取得的内容总是不完整的的。我想取得网页(www.sina.com.cn)所有显示的字符。
为什么?
我应该用什么方法?
俺对网页不熟悉,是不是有什么理解上的问题。
谢谢。
------解决思路----------------------
你的方式是取得的是网页的源码,
而很多内容使用AJAX动态生成的,取不到。
------解决思路----------------------
原因有很多,例如: 一个网页上的显示内容是多次http请求得到的, 有的内容是通过Javascript脚本动态生成的.
要实现这样的功能很难,基本上你在实现一个浏览器.
你看这个思路可行不:在你的程序列内嵌一个开源的浏览器,用这个浏览器来打开网页,等网页打开后,直接通过Javascript获取document.body.innerText