想实现下保存网页,试了下百度可以,打开来没有问题,但试了试url如果是www.google.com.hk,打开来就是乱码。。。不知道怎么解决
学java没多久。。新手求教。。
以下是java代码
public static void savePage(URL url) throws IOException, ParserException, IllegalArgumentException{ InputStream is = url.openStream(); int i; String title = HTMLHelper.getTitle(url); String file = url.getFile().trim(); String host = url.getHost().trim(); String filename = title+"("+url.getHost()+file+")"; FileOutputStream fos = new FileOutputStream("Pages\\"+filename+".html"); do{ i = is.read(); fos.write(i); } while(i!=-1); is.close(); fos.close(); System.out.println("Success!The filename is:"+filename+".html"); }
应该是文件编码的问题,百度首页编码是GBK,而Google则是UTF-8。
选择合适的编辑器打开,应当能够正确识别。
我觉得有两种可能:
1、google禁止了爬虫,需要模拟浏览器,在请求头添加浏览器信息才可以
2、google使用了gzip压缩,需要对下载过来的数据进行gzip解压才能查看
试了一下, 百度网页为utf8; 直接java访问www.google.com.hk拿到的网页为big5.
直接浏览器看www.google.com.hk, 则得到简体中文 网页. 但是也可以选择繁体中文.
应该不是用Accept Language报头控制的. Firebug看了下, 用的是cookie: PREF=ID=dc26c65e5190d12e:U=4487c9dd846518f1:FF=2:LD=zh-CN:NW=1:TM=1368715005:LM=1375804660:GM=1:S=ipFDUy0r8i8WGrOP; 如果发繁体中文请求, 则为: PREF= (...省略)LD=zh-TW...