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怎么学好python?
Oct 07 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
Python通过select实现异步IO的方法
Jun 04 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
python实现在一个画布上画多个子图
Jan 19 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
解决jupyter notebook启动后没有token的坑
Apr 24 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 中文字符串首字母的获取函数分享
2013/11/04 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
php语法检查的方法总结
2019/01/21 PHP
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
Python3处理文件中每个词的方法
2015/05/22 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
python随机取list中的元素方法
2018/04/08 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
求职信内容考虑哪几点
2013/10/05 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
农林环境专业求职信
2014/03/13 职场文书
什么是就业协议书
2014/04/17 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
通知函格式范文
2015/04/27 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
如何在Python中创建二叉树
2021/03/30 Python