python抓网页出现乱码

爬baidu正常,但换成QQ,出现乱码

import urllib.request 
url="http://www.qq.com"
req=urllib.request.Request(url)
req.add_header("User-Agent",'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36')
data=urllib.request.urlopen(req).read()
fhandle=open("D:/DB/4.html",'wb')
fhandle.write(data)
fhandle.close()

取消报头,还是乱码

http://blog.youkuaiyun.com/apple9005/article/details/52831318
按网上查找的要点,

安装: pip install chardet

官方网站: http://chardet.readthedocs.io/en/latest/usage.html

import chardet
mychar=chardet.detect(data)
print(mychar)
bm=mychar['encoding']
print(bm)
if bm == 'utf-8' or bm == 'UTF-8':
    data2=data.decode('utf-8','ignore').encode('utf-8')
else:
    data2=data.decode('GB2312','ignore').encode('utf-8')
fhandle=open("D:/DB/3.html",'wb')
fhandle.write(data2)
fhandle.close()
@_@  没乱码的,还是没乱码,加上chardet 反而变乱码了

有乱码的,还上没有解决

if bm == 'gb2312' or bm == 'GB2312':
    data2=data.decode('GB2312','ignore').encode('GB2312')
else:
    data2=data.decode('utf-8','ignore').encode('utf-8') 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值