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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
Python数据类型学习笔记
Jan 13 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
详解Python 最短匹配模式
Jul 29 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
python批量生成身份证号到Excel的两种方法实例
Jan 14 Python
python实现图片转字符画的完整代码
Feb 21 Python
python面向对象版学生信息管理系统
Jun 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
基于mysql的论坛(7)
2006/10/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
div层的移动及性能优化
2010/11/16 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
小学生操行评语
2014/04/22 职场文书
历史学专业求职信
2014/06/19 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
JavaScript组合继承详解
2021/11/07 Javascript