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程序添加图形化界面的教程
Apr 29 Python
Python 制作糗事百科爬虫实例
Sep 22 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python提取包含关键字的整行数据方法
Dec 11 Python
python实现flappy bird游戏
Dec 24 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
创建Django项目图文实例详解
Jun 06 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python3并发写文件与Python对比
Nov 20 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
python实现快递价格查询系统
Mar 03 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
星际争霸秘籍
2020/03/04 星际争霸
基于mysql的论坛(5)
2006/10/09 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
javascript 继承实现方法
2009/08/26 Javascript
Dojo 学习要点
2010/09/03 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
中软Java笔试题
2012/11/11 面试题
学习新党章思想汇报
2014/01/09 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
如何写自我鉴定
2014/03/19 职场文书
任命书格式
2014/06/05 职场文书
文艺演出策划方案
2014/06/07 职场文书
校本研修个人总结
2015/02/28 职场文书
运动会加油稿
2015/07/22 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL