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的Django框架的运行方式及处理流程
Apr 08 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
python 的列表遍历删除实现代码
Apr 12 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
使用numba对Python运算加速的方法
Oct 15 Python
Python for循环与getitem的关系详解
Jan 02 Python
Python tcp传输代码实例解析
Mar 18 Python
python使用建议与技巧分享(一)
Aug 17 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
python 实现体质指数BMI计算
May 26 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php常用的工具开发整理
2019/09/26 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
详解Python中的日志模块logging
2015/06/19 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
what is the difference between ext2 and ext3
2015/08/25 面试题
2014新课程改革心得体会
2014/03/10 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL