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数字图像处理实现直方图与均衡化
May 04 Python
python3将视频流保存为本地视频文件
Jun 20 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
pybind11和numpy进行交互的方法
Jul 04 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
Keras搭建自编码器操作
Jul 03 Python
Python -m参数原理及使用方法解析
Aug 21 Python
jupyter notebook指定启动目录的方法
Mar 02 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+ajax 无刷新删除数据
2010/02/20 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
node.js require() 源码解读
2015/12/13 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
Python性能优化技巧
2015/03/09 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
python下载的库包存放路径
2020/07/27 Python
戴尔美国官网:Dell
2016/08/31 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
服务员岗位职责
2014/01/29 职场文书
大学生社会实践评语
2014/04/25 职场文书
世界读书日的活动方案
2014/08/20 职场文书
综治工作心得体会
2014/09/11 职场文书
JavaScript实现音乐播放器
2022/08/14 Javascript