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使用心得之获得github代码库列表
Jun 25 Python
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
利用Python开发实现简单的记事本
Nov 15 Python
基于python时间处理方法(详解)
Aug 14 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python的UTC时间转换讲解
Feb 26 Python
python实现windows倒计时锁屏功能
Jul 30 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
JavaScript静态的动态
2006/09/18 Javascript
静态页面的值传递(三部曲)
2006/09/25 Javascript
关于图片验证码设计的思考
2007/01/29 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python如何制作英文字典
2019/06/25 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
深入了解Python enumerate和zip
2020/07/16 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
《颐和园》教学反思
2014/02/26 职场文书
小学毕业感言500字
2014/02/28 职场文书
机电专业求职信
2014/06/14 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL