Python3.x:BeautifulSoup()解决中文乱码问题

问题:

  BeautifulSoup获取网页内容,中文显示乱码;

解决方案:

  遇到情况也是比较奇葩,利用chardet获取网页编码,然后在BeautifulSoup构造器中传入from_encoding=参数,获取的还是一堆乱码;

无奈之下,在网络上大搜索一通,结果还是没搞清楚原因,但是问题倒是找到了解决方案;

在这里提供下,给遇到同样问题的码友:

如果中文页面编码是gb2312,gbk,在BeautifulSoup构造器中传入from_encoding="gb18030"参数即可解决乱码问题,

即使分析的页面是utf8的页面使用gb18030也不会出现乱码问题;

import requests
from bs4 import BeautifulSoup
all_url = ""
start_html= requests.get(all_url, headers=Hostreferer)
#如果中文页面编码是gb2312,gbk,在BeautifulSoup构造器中传入from_encoding="gb18030"参数即可解决乱码问题,即使分析的页面是utf8的页面使用gb18030也不会出现乱码问题
soup = BeautifulSoup(start_html.content, "html.parser", from_encoding="gb18030")

这里chardet的方式也贴出来,供大家参考:

import urllib.request 
import chardet 
all_url = ""
charset1=chardet.detect(urllib.request.urlopen(all_url).read() )
print(charset1)
#输出结果: {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
bmfs = charset1['encoding']
print(bmfs)
#输出结果:GB2312

soup = BeautifulSoup(start_html.content, "html.parser", from_encoding=bmfs)

转自:https://www.cnblogs.com/lizm166/p/8319919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值