Python BeautifulSoup中文乱码问题的2种解决方法


Posted in Python onApril 22, 2014

解决方法一:

使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家
首先是代码

from bs4 import BeautifulSoup
import urllib2url = 'https://3water.com/'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page,from_encoding="utf8")
print soup.original_encoding
print (soup.title).encode('gb18030')
file = open("title.txt","w")
file.write(str(soup.title))
file.close()
 
for link in soup.find_all('a'):
    print link['href']

在刚开始测试的时候发现,虽然输出是乱码的,但是写在文件里面却是正常的.然后在网上找了找解决办法才发现
print一个对象的逻辑:内部是调用对象的__str__得到对应的字符串的,此处对应的是soup的__str__ 而针对于soup本身,其实已经是Unicode编码,所以可以通过指定__str__输出时的编码为GBK,以使得此处正确显示非乱码的中文
而对于cmd:(中文的系统中)编码为GBK,所以只要重新编码为gb18030就可以正常输出了
就是下面这行代码
print (soup.title).encode('gb18030')

解决方法二:

BeautifulSoup在解析utf-8编码的网页时,如果不指定fromEncoding或者将fromEncoding指定为utf-8会出现中文乱码的现象。

解决此问题的方法是将Beautifulsoup构造函数中的fromEncoding参数的值指定为:gb18030

import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen('https://3water.com/');
soup = BeautifulSoup(page,fromEncoding="gb18030")
print soup.originalEncoding
print soup.prettify()
Python 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python实现截屏的函数
Jul 26 Python
Python探索之Metaclass初步了解
Oct 28 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python爬取抖音视频的实例分析
Jan 19 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python中使用smtplib和email模块发送邮件实例
Apr 22 #Python
python用字典统计单词或汉字词个数示例
Apr 22 #Python
python实现rest请求api示例
Apr 22 #Python
python 七种邮件内容发送方法实例
Apr 22 #Python
sqlalchemy对象转dict的示例
Apr 22 #Python
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 #Python
python实现linux服务器批量修改密码并生成execl
Apr 22 #Python
You might like
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Python学习资料
2007/02/08 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
python3多线程知识点总结
2019/09/26 Python
python如何导入依赖包
2020/07/13 Python
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
房地产还款计划书
2014/01/10 职场文书
学校卫生检查制度
2014/02/03 职场文书
环保口号大全
2014/06/12 职场文书
表扬信范文
2015/05/04 职场文书
2016年春节问候语
2015/11/11 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers