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中在脚本中引用其他文件函数的实现方法
Jun 23 Python
Python中查看文件名和文件路径
Mar 31 Python
python并发2之使用asyncio处理并发
Dec 21 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
Python的形参和实参使用方式
Dec 24 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
python实现扫雷游戏
Mar 03 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
python re.match()用法相关示例
Jan 27 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
简单介绍Python中的try和finally和with方法
2015/05/05 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python对html过滤处理的方法
2018/10/21 Python
python logging 日志的级别调整方式
2020/02/21 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
人事主管的岗位职责
2013/11/16 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
小学六年级学生评语
2014/04/22 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
感谢信模板大全
2015/01/23 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL