python3.6从网页源码中抓取的unicode无法输出中文 10
如\u897f\u74dc\u9053\u4eba直接定义a='\u897f\u74dc\u9053\u4eba'然后print(a)得到‘西瓜道人’但是用正则表达式从网...
如\u897f\u74dc\u9053\u4eba直接定义a = '\u897f\u74dc\u9053\u4eba'然后print(a)得到‘西瓜道人’但是用正则表达式从网页中爬取到的如name[0] = '\u897f\u74dc\u9053\u4eba'也是str类型,print出来却是‘\u897f\u74dc\u9053\u4eba’???用if 比较a和name[0]得到的是false,但是不同在哪?我把字符串按'\'分割再用join()函数重新拼成原字符串,输出的还是unicode码,没有自动转成中文
展开
1个回答
展开全部
import requests
from bs4 import BeautifulSoup
import chardet
def get_charset(byte_str):
charset=chardet.detect(byte_str)['encoding']
return charset
r=requests.get('http://xiaorui.cc/2016/02/19/代码分析python-requests库中文编码问题/')
r.encoding=get_charset(r.content)
soup=BeautifulSoup(r.text,'lxml')
soup.text
乱码的原因主要是网页的字符集和你输出的字符集不一致造成的,让你的输出和采集到的字符集保持一致就可以了
我这里用requests
urllib库也是一样的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询