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 bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
python图像处理之镜像实现方法
May 30 Python
python图片验证码生成代码
Jul 02 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
pandas计算最大连续间隔的方法
Jul 04 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
python实现图片九宫格分割
Mar 07 Python
基于python实现学生信息管理系统
Nov 22 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python制作抽奖程序代码详解
Jan 15 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调用数据库的存贮过程
2006/10/09 PHP
PHP实现简单登录界面
2019/10/23 PHP
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
vue之延时刷新实例
2019/11/14 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
房屋租赁协议书范本
2014/04/10 职场文书
家长写给孩子的评语
2014/04/18 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
生产车间管理制度
2015/08/04 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android