爬取UTF-8的编码的网页为什么会出现问题呢?

Pat刘 发布于 2012/11/18 10:46
阅读 533
收藏 0

如何使用英特尔®oneAPI工具实现PyTorch 优化,直播火热报名中>>>

url = new URL(Url);
try {
	URLConnection urlConn = url.openConnection(); // 打开网站链接s
	urlConn.setRequestProperty("User-Agent","Mozilla/5.0");
        InputStream in=urlConn.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8")); // 实例化输入流,并获取网页代码
	return br;
	} 
catch (IOException eio1) {
	System.out.println(eio1);
	return null;
}

这是我获取网页源码的部分代码,我这里没有从网页中获取charset,直接写的UTF-8~因为我现在测试出问题的网站恰恰是出问题的UTF-8编码的www.mop.com~

在获取猫扑网页源码的时候,出现了很奇特的现象,一会乱码一会正常...而且大多数时候获取不到源码而是乱码...(我不断在运行)这是为什么!?我明明设定的是按UTF-8转化的啊~而且Mop主页确实是charset=utf-8的啊~~为什么会出现乱码的状况呢????????求助啊!!!!!!!!!!!!!!!!

加载中
0
用脚后跟扯淡
它用的应该是gbk   , 你可以试试
Pat刘
Pat刘
不是的~我大规模测试的结果显示只有这一个有问题~甚至tt.mop.com和dzh.mop.com这些都没问题
0
Jooooooker
Jooooooker

curl "www.mop.com" -I 

HTTP/1.1 200 OK

Server: nginx/0.8.32
Date: Sun, 18 Nov 2012 04:49:14 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Sun, 18 Nov 2012 04:52:14 GMT
Cache-Control: max-age=180

Content-Encoding: gzip

默认GZIP压缩过了 要先解压缩,然后才能输出 看到的才不是乱码

Jooooooker
Jooooooker
回复 @Pat刘 : 还有刚刚说的deflate, 不过一般都是gzip吧~具体的话可以判断返回的HTTP头里面的Content-Encoding就好了~
Pat刘
Pat刘
@Pat刘 呼呼~搞定啦~不过有一个小问题,就是我只做了gzip的压缩处理~现在的主流网页要是压缩的话除了gzip还会用别的格式么
Pat刘
Pat刘
回复 @Jooooooker : 我用getContentEncoding()方法尝试获取编码格式,有时候获取到的确实是gzip,但有时候仍旧是null~到底mop这个给我发送的到底是什么啊
Jooooooker
Jooooooker
回复 @Pat刘 : 因为一般来说浏览器发送HTTP请求头的时候会带有Accept-Encoding: gzip, deflate,服务器根据这个判断能不能发压缩的东西给你。但是mop这个,明显没做处理~不过现在流行的浏览器都能解gzip,所以也算是一种防爬虫初学者的方法吧。。。。
Pat刘
Pat刘
好的~想去试试~可是只有mop这一个主页压缩过了么~测试了很多大网站都没出这个问题哇
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部