依据URL下载网页源代码
根据URL下载网页源代码
为什么我按上面程序执行后,控制台输出的字符和直接在网页上右键查看源代码的字符有区别??上面程序哪里需要修改呢?比如说,控制台和网页上的第一行就有区别,如图。


------解决思路----------------------
看看你的浏览器发出的 HTTP 请求 HEADER 里都有什么,在代码里都加上,尤其是 User-Agent。
------解决思路----------------------
HTTP 请求由若干 HEADER 和一个 BODY 组成,HEADER 实际上是一个键值对,比如 Accept-Encoding:gzip,deflate,sdch 表示客户端可以接受 BODY 内容使用 gzip 或 deflate 或 sdch 算法压缩,服务器端就根据这个在响应的时候选择算法对 BODY 进行压缩。
User-Agent 的用处是告诉服务器客户端是什么类型的,服务器通过这个可以判断客户端是 FireFox 还是 Chrome,是 Windows 还是 Android,从而返回不同的网页内容。比如在手机上访问同样一个网站显示的内容比 PC 上要少很多,从而达到节省流量及更好地在小屏幕上显示的目的。
所以你在浏览器看到的网页和 JAVA 代码得到的网页是不一样的。
------解决思路----------------------
最近刚好在用这个,直接上代码,应该是你要的
URL url = new URL("http://www.baidu.com");
HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
httpConn.setRequestMethod("GET");
InputStreamReader insr = new InputStreamReader(httpConn.getInputStream(),"utf-8");
int respInt = insr.read();
StringBuffer content = new StringBuffer();
while (respInt != -1) {
content.append((char) respInt);
//System.out.print((char) respInt);
respInt = insr.read();
}
System.out.println(content);
------解决思路----------------------
模仿浏览器 需要设置一些头域什么的
import java.net.*;
import java.io.*;
public class GetHtml {
public static void main(String[] args){
String readstring;
try{
URL root = new URL("http://www.baidu.com");
BufferedReader dis = new BufferedReader(new InputStreamReader(root.openStream(), "utf-8"));
while((readstring = dis.readLine()) != null){
System.out.println(readstring);
}
}
catch(MalformedURLException e){
System.out.println(e);
}
}
}
为什么我按上面程序执行后,控制台输出的字符和直接在网页上右键查看源代码的字符有区别??上面程序哪里需要修改呢?比如说,控制台和网页上的第一行就有区别,如图。
------解决思路----------------------
看看你的浏览器发出的 HTTP 请求 HEADER 里都有什么,在代码里都加上,尤其是 User-Agent。
------解决思路----------------------
HTTP 请求由若干 HEADER 和一个 BODY 组成,HEADER 实际上是一个键值对,比如 Accept-Encoding:gzip,deflate,sdch 表示客户端可以接受 BODY 内容使用 gzip 或 deflate 或 sdch 算法压缩,服务器端就根据这个在响应的时候选择算法对 BODY 进行压缩。
User-Agent 的用处是告诉服务器客户端是什么类型的,服务器通过这个可以判断客户端是 FireFox 还是 Chrome,是 Windows 还是 Android,从而返回不同的网页内容。比如在手机上访问同样一个网站显示的内容比 PC 上要少很多,从而达到节省流量及更好地在小屏幕上显示的目的。
所以你在浏览器看到的网页和 JAVA 代码得到的网页是不一样的。
------解决思路----------------------
最近刚好在用这个,直接上代码,应该是你要的
URL url = new URL("http://www.baidu.com");
HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
httpConn.setRequestMethod("GET");
InputStreamReader insr = new InputStreamReader(httpConn.getInputStream(),"utf-8");
int respInt = insr.read();
StringBuffer content = new StringBuffer();
while (respInt != -1) {
content.append((char) respInt);
//System.out.print((char) respInt);
respInt = insr.read();
}
System.out.println(content);
------解决思路----------------------
模仿浏览器 需要设置一些头域什么的