python获取网页编码格式

爬虫获取网页内容要准确获取网页的编码格式,有utf-8,gbk,gb2312等等。
今天在爬新闻网站时候,发现同一个网页会分不同的编码,但是获取HTML节点相关是根据第一个编码格式来的,拿人民网新闻页源码举例。
图1
当我使用python的

url = "http://theory.people.com.cn/n1/2019/1001/c40531-31383055.html"
r = request.Request(url)
html = request.urlopen(r).read().decode('utf-8','ignore')

这个方法的时候,decode的编码一定要选择图1的第一个箭头的编码,不然会乱码。但是怎么获取呢,就是一个很坑的过程,python常用的charset工具会把网页解析成windows****的编码方式,不准确,于是我想到用正则匹配到第一个编码格式。

real_charset = re.findall(r'charset=(.*?)"',html[0:500],re.S)[0]
html = request.urlopen(r).read().decode(real_charset,'ignore')

这里解析网页的时候选择utf-8就行,然后正则匹配,拿到正确的编码格式再继续下面的网页内容解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值