使用BeautifulSoup中的find_all方法输出中文乱码,为ASCII码,但输出是一个对象,不能使用decode()和encode(),不知该如何转换
代码如下:
#coding:utf-8
import urllib2
from sgmllib import SGMLParser
from bs4 import BeautifulSoup
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
soup=BeautifulSoup(open('test.html'),"lxml")
s=soup.find_all("title")
print s
输出如下:
[<title>\n \u91cd\u5e86 - \u5728\u7ebf\u8d2d\u7968&\u5f71\u8baf\n</title>]
[Finished in 0.7s]
当使用decode()方法时,报错如下:
Traceback (most recent call last):
File "G:\Work\code\python\3.py", line 13, in <module>
print s.decode()
AttributeError: 'ResultSet' object has no attribute 'decode'
[Finished in 0.8s with exit code 1]
在官方文档中也有这么一句话:
如果传入字节码参数,Beautiful Soup会当作UTF-8编码,可以传入一段Unicode 编码来避免Beautiful Soup解析编码出错
小白一枚,实在不知该如何该如何传入一段Unicode 编码来避免Beautiful Soup解析编码出错,希望有大神告知,感激不敬!
这个跟beautifulsoup没关系,而是跟输出列表有关系,python列表里面不能输出汉字,只能单独输出,另外你的并不是乱码,结果是正确的, 只是unicode的编码。改成这样试试: