python BeautifulSoup页面编码设置与编码处理方法

发布时间:2020-09-13编辑:脚本学堂
有关python BeautifulSoup设置页页编码的方法,为避免BeautifulSoup抓取页面时的编码错误,通过在beautifulsoup中指定字符编码,BeautifulSoup编码处理函数学习。

BeautifulSoup页面编码设置

在用BeautifulSoup进行抓取页面的时候,会各种各样的编码错误。
可以通过在beautifulsoup中指定字符编码,解决问题。

代码:
 

复制代码 代码示例:

#!/usr/bin/python

import urllib2 
from BeautifulSoup import BeautifulSoup 
 
page = urllib2.urlopen('http://www.163.com'); 
soup = BeautifulSoup(page,from_encoding="gb2312") 
 
print soup.originalEncoding
print soup.prettify()

说明:
在BeautifulSoup构造器中传入fromEncoding参数即可解决乱码问题,当然具体参数值要根据获取页面的编码来定。

二、BeautifulSoup的编码处理
BeautifulSoup内部使用的是Unicode,BeautifulSoup会自动检测输入文件的编码类型将其转换为Unicode。

BeautifulSoup编码检测顺序
BeautifulSoup按下面的顺序检测编码:
创建Soup对象时传递的 fromEncoding 参数;
XML/HTML文件自己定义的编码;
文件开始几个字节所表示的编码特征,此时能判断的编码只可能是以下编码之一:UTF-*,EBCDIC,和ASCII。

如果安装了chardet,BeautifulSoup会用chardet检测文件编码。
UTF-8
Windows-1252
在BeautifulSoup的源文件中有这么一句代码:
DEFAULT_OUTPUT_ENCODING = "utf-8"
说明BeautifulSoup默认输出编码是utf-8编码。

BeautifulSoup中编码处理函数
BeautifulSoup中的originalEncoding变量可以给出BeautifulSoup检测出的文件编码。
例子:
 

复制代码 代码示例:
import urllib2
from BeautifulSoup import BeautifulSoup
 
doc = urllib2.urlopen("http://www.jb200.com/")
soup = BeautifulSoup(doc)
soup.originalEncoding
#u'utf-8'