Python信息抽取之乱码解决办法


Posted in Python onJune 29, 2017

Python信息抽取之乱码解决办法

就事论事,直说自己遇到的情况,和我不一样的路过吧,一样的就看看吧

信息抓取,用python,beautifulSoup,lxml,re,urllib2,urllib2去获取想要抽取的页面内容,然后使用lxml或者beautifulSoup进行解析,插入mysql 具体的内容,好了貌似很简单很easy的样子,可是里面的恶心之处就来了,第一,国内开发网站的人在指定网站编码或者是保存网站源码的时候并没有考虑什么编码,反正一句话,一个网站即使你用工具查看或者查看源码头信息查看到他们的源码是utf-8,或者GBK之类的,也别信,哎,什么东西信了就遭殃了,即<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

以下给出一些流程:(具体各个库不是我这里向说的哦)

 import urllib2

 import chardet


html = urllib2.urlopen("某网站")

  print chardet.detect(html) #这里会输出一个字典{'a':0.99999,'encoding':'utf-8'}

好,这整个html的编码都知道,该插入以utf-8建立的mysql数据库了吧,但是我就在插入的时候发生错误了,因为我使用lxml以后的字符串不是utf-8,而是Big5(繁体字编码),还有各种未知编码EUC-JP(日本语编码),OK,我采取了unicode方法,先对这个字段进行解码,在进行编码

if chardet.detect(name)['encoding'] == 'GB2312':
name = unicode(name,'GB2312','ignore').encode('utf-8','ignore')
elif chardet.detect(name)['encoding'] == 'Big5':
 name = unicode(name,'Big5','ignore').encode('utf-8','ignore')
elif chardet.detect(name)['encoding'] == 'ascii':
 name = unicode(name,'ascii','ignore').encode('utf-8','ignore')
elif chardet.detect(name)['encoding'] == 'GBK':
 name = unicode(name,'GBK','ignore').encode('utf-8','ignore')
elif chardet.detect(name)['encoding'] == 'EUC-JP':
 name = unicode(name,'EUC-JP','ignore').encode('utf-8','ignore')
else:
  name = '未知'

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
python笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
python操作redis方法总结
Jun 06 Python
python tkinter实现屏保程序
Jul 30 Python
python中wx模块的具体使用方法
May 15 Python
用python绘制樱花树
Oct 09 Python
python实现移动木板小游戏
Oct 09 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 #Python
python笔记:mysql、redis操作方法
Jun 28 #Python
老生常谈Python序列化和反序列化
Jun 28 #Python
python flask实现分页效果
Jun 27 #Python
Django自定义分页效果
Jun 27 #Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 #Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 #Python
You might like
php preg_replace替换实例讲解
2013/11/04 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
移动端js图片查看器
2016/11/17 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python 如何在字符串中插入变量
2020/08/01 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
行政助理岗位职责范文
2013/12/03 职场文书
四年的大学生生活自我评价
2013/12/09 职场文书
主题团日活动总结
2014/06/25 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis
关于mysql中string和number的转换问题
2022/06/14 MySQL