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判断、获取一张图片主色调的2个实例
Apr 10 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
详解python中asyncio模块
Mar 03 Python
Sanic框架配置操作分析
Jul 17 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
python如何将图片转换素描画
Sep 08 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
编程语言Python的发展史
2014/09/26 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
python中的print()输出
2019/04/12 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python实现高斯投影正反算方式
2020/01/17 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
中学生团员自我评价分享
2013/12/07 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
委托书的样本
2015/01/28 职场文书
周末问候语大全
2015/11/10 职场文书
医院岗前培训心得体会
2016/01/08 职场文书