python获取网页编码的方法

当我们使用python进行网页访问时候,需要对网站返回的数据进行处理,并加以使用,但是网页编码格式多种多样,我们如何判断当前网站返回的网页是什么编码格式呢?
一般有两种种方法:

一、直接将返回的数据输出info(),查看Content-Type项对应的charset值,其实这一步也可以通过浏览器查看。

代码:

import urllib2
headers = {"User-Agent": 'Opera/9.25 (Windows NT 5.1; U; en)'}
request = urllib2.Request(url='http://www.baidu.com', headers=headers)
response = urllib2.urlopen(request)
print response.info()

返回:

Date: Sun, 27 Aug 2017 15:22:38 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: Close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=35C0BF2A619FC7EB3715807666C69B51:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=35C0BF2A619FC7EB3715807666C69B51; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1503847358; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1454_21103_17001_22160; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: baidu+a9ddd26860a3e70c2ebee5b751c1f0e0
Expires: Sun, 27 Aug 2017 15:22:00 GMT
X-Powered-By: HPHP
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0x8133dc38000275f8
BDUSERID: 0
也可以通过getparam获得编码方式:

import urllib2
headers = {"User-Agent": 'Opera/9.25 (Windows NT 5.1; U; en)'}
request = urllib2.Request(url='http://www.baidu.com', headers=headers)
response = urllib2.urlopen(request)
response.info().getparam('charset')

输出:

utf-8
二、使用chardet模块
import chardet
import urllib2	
headers = {"User-Agent": 'Opera/9.25 (Windows NT 5.1; U; en)'}
request = urllib2.Request(url='http://www.baidu.com', headers=headers)
response = urllib2.urlopen(request).read()
chardit1 = chardet.detect(data1)
print chardit1['encoding']

输出:

utf-8
但是网上有听过,第二种方法更准确一些,单凭网页给出的编码方式不一定靠谱,建议具体情况两种方式再斟酌。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值