[问题] BeautifulSoup 指定title变乱码

楼主: etime (suck)   2014-06-01 21:17:38
os: win7
python version: python 2.7
IDE: PyScripter
我在抓网站资料的时候,第一次抓,全都是乱码,无论是.prettify()或是.title。
后来发现是编码的问题,用chardet去做确认来源是big5,
在塞进BeautifulSoup会被转成windows-1252
usock = urllib2.urlopen(url)
data = usock.read()
usock.close()
bdata = BeautifulSoup(data)
print bdata.prettify()
print chardet.detect(data)
print type(data)
print bdata.original_encoding
print bdata.title
{'confidence': 0.99, 'encoding': 'Big5'}
<type 'str'>
windows-1252
接着强制转为utf-8
usock = urllib2.urlopen(url)
data = usock.read()
changecode = unicode(data, 'big5','ignore').encode('utf-8','ignore')
usock.close()
bdata = BeautifulSoup(changecode)
print bdata.prettify()
print chardet.detect(changecode)
print type(changecode)
print bdata.original_encoding
print bdata.title
{'confidence': 0.99, 'encoding': 'utf-8'}
<type 'str'>
utf-8
这次有个奇怪的地方,在使用.prettify()输出整个网站资料时显示是正常的
但改用.title却是乱码?除非把bdata.title改成bdata.title.encode('big5')
就能正常的文字...请问这状况应该是那里有问题?

Links booklink

Contact Us: admin [ a t ] ucptt.com