爬虫乱码的解决办法

写爬虫时肯定是要去考虑乱码的问题,刚开始自己没怎么有思路,最后看了亮哥解决乱码的博客。才明白,主要一下几点:

1:解析服务端返回的header中content-type. 得到编码,改编码是什么就按照什么去解析返回的字节流。

2:如果服务端header中没有content-type信息,就按照 utf-8 解析返回的内容 。再去解析meta标签 得到编码,并作为最终的解析服务端返回字节流的编码。(因为按照gbk 或者 utf-8 还是其他的编码 解析charset=utf-8 的结果都是一样的,因为它们都兼容ascii编码,也就是前2个字节的码表都一样)
3:如果标签meta中也没有编码的话,那么可以尝试着去 得到 en ,zh-CN ,zh. 然后用相应的编码解析返回的内容。
4:如果上面条件1,2,3都不满足的话,可以通过智能探测,如cpdetector,它是目前口碑最好的java实现的智能探测编码,是基于统计实现的,所以注定会有一定的错误率,有些特殊网页,它确实是不准确的,如网页的meta中charset和实际的浏览器识别的正常显示的charset不相同的情况,它的识别也是错误的。所以这种办法会有误判的的情况。并不是太好。不过经过前面的3部也基本能得到编码类型了。
5:还有一种情况就是国内的网页写的很不规范,比如实际类型是ut-8 ,但是写成charset=gbk….。这种情况也要考虑。目前想到的解决办法是,。。。不知道怎么做,明天问下亮哥。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值