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实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
列举Python中吸引人的一些特性
Apr 09 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
python通过tcp发送xml报文的方法
Dec 28 Python
flask框架路由常用定义方式总结
Jul 23 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
python使用信号量动态更新配置文件的操作
Apr 01 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
php设计模式之单例模式代码
2016/06/11 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
js文字横向滚动特效
2015/11/11 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
Python扩展内置类型详解
2018/03/26 Python
基于python log取对数详解
2018/06/08 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python用match()函数爬数据方法详解
2019/07/23 Python
python matplotlib拟合直线的实现
2019/11/19 Python
如何在python中执行另一个py文件
2020/04/30 Python
PyTorch-GPU加速实例
2020/06/23 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
会计学个人自荐信模板
2013/12/13 职场文书
调解员先进事迹材料
2014/02/07 职场文书
微电影大赛策划方案
2014/06/05 职场文书
导游词之井冈山
2019/11/20 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL