Python信息抽取之乱码解决办法

作者:lqh 时间:2021-10-12 23:32:46 

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 = '未知'

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://www.cnblogs.com/CLTANG/archive/2011/01/21/1941151.html

标签:Python,信息抽取,乱码
0
投稿

猜你喜欢

  • 对python实现二维函数高次拟合的示例详解

    2021-06-30 11:24:06
  • SQL Server的全文搜索功能

    2024-01-27 20:49:24
  • python使用Plotly绘图工具绘制柱状图

    2021-10-05 00:22:34
  • 浅谈Golang Slice切片如何扩容的实现

    2024-04-29 13:06:28
  • python通过imaplib模块读取gmail里邮件的方法

    2023-11-03 04:24:42
  • Python实现多行注释的另类方法

    2021-04-28 21:49:12
  • 微信公众号H5支付接口调用方法

    2023-07-02 05:19:04
  • Thinkphp结合ajaxFileUpload实现ajax异步图片传输全套代码

    2023-06-14 04:01:53
  • 分享十个Python超级好用提高工作效率的自动化脚本

    2021-06-26 17:17:16
  • Python语言描述最大连续子序列和

    2023-10-03 20:16:24
  • 解决pytorch-yolov3 train 报错的问题

    2023-11-26 04:14:29
  • 通过作业调度建立SQL Server的自动备份

    2008-12-09 14:58:00
  • 加快Firefox 3.5启动速度的方法

    2009-07-16 15:22:00
  • php使用递归与迭代实现快速排序示例

    2023-11-14 09:46:31
  • axios 拦截器管理类链式调用手写实现及原理剖析

    2023-07-02 16:38:23
  • MYSQL SET类型字段的SQL操作知识介绍

    2024-01-20 20:00:38
  • Anaconda2下实现Python2.7和Python3.5的共存方法

    2022-06-30 12:43:30
  • 为WordPress增加微博功能

    2010-08-31 15:01:00
  • 如何做好一份前端工程师的简历?

    2009-02-17 12:52:00
  • 详解pytest分布式执行插件 pytest-xdist 的高级用法

    2022-11-04 21:41:51
  • asp之家 网络编程 m.aspxhome.com