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爬虫之神器正则表达式
Nov 06 Python
python生成器generator用法实例分析
Jun 04 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
django中send_mail功能实现详解
Feb 06 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
Python实现像awk一样分割字符串
Sep 15 Python
利用Pycharm连接服务器的全过程记录
Jul 01 Python
python处理json数据文件
Apr 11 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与paypal整合方法
2010/11/28 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
react的hooks的用法详解
2020/10/12 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
python实现的重启关机程序实例
2014/08/21 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
自我评价优缺点范文
2015/03/11 职场文书
公司2015年终工作总结
2015/05/26 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android