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 相关文章推荐
使用Python构建Hopfield网络的教程
Apr 14 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
python excel转换csv代码实例
Aug 26 Python
python多进程并行代码实例
Sep 30 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Django使用rest_framework写出API
May 21 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
Python实现一个优先级队列的方法
Jul 31 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python中实现词云图的示例
Dec 19 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读取MySQL数据代码
2008/06/05 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
javascript的BOM
2016/05/03 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python中Random和Math模块学习笔记
2015/05/18 Python
Python os模块学习笔记
2015/06/21 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python数字类型math库原理解析
2020/03/02 Python
Python中常见的数制转换有哪些
2020/05/27 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
高中数学教师求职信
2013/10/30 职场文书
社团招新策划书
2014/02/04 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
委托证明范本
2014/11/25 职场文书
2014年科研工作总结
2014/12/03 职场文书
2015年女职工工作总结
2015/05/15 职场文书