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数组条件过滤filter函数使用示例
Jul 22 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
python rsa 加密解密
Mar 20 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python实现反转部分单向链表
Sep 27 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
python 实现矩阵按对角线打印
Nov 29 Python
python绘制动态曲线教程
Feb 24 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
Mar 27 Python
Python读取二进制文件代码方法解析
Jun 22 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 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横向重复区域显示二法
2008/09/25 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
nginx 设置多个站跨域
2021/03/09 Servers
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python可视化实现代码
2019/01/15 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
微笑服务标语
2014/06/24 职场文书
小学生春游活动方案
2014/08/20 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
调研报告的主要写法
2019/04/18 职场文书