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装饰器与递归算法详解
Feb 18 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
Python编程argparse入门浅析
Feb 07 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
python不同版本的_new_不同点总结
Dec 09 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python中xlutils库用法浅析
Dec 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php 类自动载入的方法
2015/06/03 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
iView框架问题整理小结
2018/10/16 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python django事务transaction源码分析详解
2017/03/17 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Python实现随机爬山算法
2021/01/29 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
家具商场的活动方案
2014/08/16 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
React如何创建组件
2021/06/27 Javascript
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
MySQL常见优化方案汇总
2022/01/18 MySQL