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 相关文章推荐
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python连接DB2数据库
Aug 27 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
深入浅析python的第三方库pandas
Feb 13 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
python如何在终端里面显示一张图片
2016/08/17 Python
Python实现视频下载功能
2017/03/14 Python
python数据结构之链表的实例讲解
2017/07/25 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
Python函数中不定长参数的写法
2019/02/13 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
如何唤起类中的一个方法
2013/11/29 面试题
气象学专业个人求职信
2014/04/22 职场文书
2014年党务公开方案
2014/05/08 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
2015年教研组工作总结
2015/05/04 职场文书
python通过新建环境安装tfx的问题
2022/05/20 Python