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实现下载网易云音乐的高清MV
Mar 16 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
python 以16进制打印输出的方法
Jul 09 Python
python2与python3共存问题的解决方法
Sep 18 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
python实现交并比IOU教程
Apr 16 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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
2009/06/29 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
python定时执行指定函数的方法
2015/05/27 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
管理信息系学生的自我评价
2014/01/11 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
经理聘任证明
2015/03/02 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书