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 19 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
python 列表推导式使用详解
Aug 29 Python
详解Django配置优化方法
Nov 18 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
python实现密码强度校验
Mar 18 Python
Python字符串三种格式化输出
Sep 17 Python
python 利用toapi库自动生成api
Oct 19 Python
如何基于Python按行合并两个txt
Nov 03 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 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
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
年度考核自我鉴定
2013/11/09 职场文书
高中生毕业自我鉴定范文
2013/12/22 职场文书
老师自我鉴定范文
2013/12/25 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
药店促销活动总结
2014/07/10 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
标准发言稿结尾
2019/07/18 职场文书
Python类方法总结讲解
2021/07/26 Python