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实现实时监控文件的方法
Aug 26 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
python list是否包含另一个list所有元素的实例
May 04 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
详解python中的time和datetime的常用方法
Jul 08 Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 Python
Python log模块logging记录打印用法解析
Jan 20 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python 存取npy格式数据实例
Jul 01 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
详解Python模块化编程与装饰器
Jan 16 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 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 array_multisort()函数的使用札记
2011/07/03 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
3分钟学会一个Python小技巧
2018/11/23 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python各类经纬度转换的实例代码
2019/08/08 Python
python dataframe NaN处理方式
2019/12/26 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
求职信写作要突出重点
2014/01/01 职场文书
自荐信的基本格式
2014/02/22 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
老公出轨后的保证书
2015/05/08 职场文书
尼克胡哲观后感
2015/06/08 职场文书
2015教师节通讯稿
2015/07/20 职场文书