用juniversalchardet解决爬虫乱码问题
原创文章,转载请注明。
爬虫往往会遇到乱码问题。最简单的方法是依据http的响应信息来获取编码信息。但假设对方站点的响应信息不包括编码信息或编码信息错误,那么爬虫取下来的信息就非常可能是乱码。
好的解决的方法是直接依据页面内容来自己主动推断页面的编码。
如Mozilla公司的firefox使用的universalchardet编码自己主动检測工具。
juniversalchardet是universalchardet的java版本号。
源代码开源于 https://github.com/thkoch2001/juniversalchardet
自己主动编码主要是依据统计学的方法来推断。详细原理。能够看http://www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html
如今以Java爬虫经常使用的httpclient来解说怎样使用。看下面关键代码:
UniversalDetector encDetector = new UniversalDetector(null);while ((l = myStream.read(tmp)) != -1) {buffer.append(tmp, 0, l);if (!encDetector.isDone()) {encDetector.handleData(tmp, 0, l);}}
encDetector.dataEnd();
String encoding = encDetector.getDetectedCharset();
if (encoding != null) {return new String(buffer.toByteArray(), encoding);
}
encDetector.reset();
myStream.read(tmp)) 读取httpclient得到的流。我们要做的就是在读流的同一时候,运用juniversalchardet来检測编码,假设有符合特征的编码的出现,则最后可通过detector.getDetectedCharset()
能够得到编码。否则返回null。至此,检測工作结束。通过String的构造方法来进行按一定编码构建字符串。
用juniversalchardet解决爬虫乱码问题相关推荐
- 解决爬虫中文乱码问题
解决爬虫中文乱码问题 今天群里有个人反映某个网址爬出来的网页源代码出现中文乱码,我研究了半天,终于找到了解决方法. 一开始,我是这样做的: import requestsurl = 'http://s ...
- python学习笔记分享(四十)网络爬虫(7)反爬虫问题,解决中文乱码,登陆和验证码处理
网络爬虫深度知识 一.反爬虫问题 (一)反爬虫原因 1.网络爬虫浪费了网站的流量 2.数据是私有资源 3.爬虫协议与原则 (二)反爬虫方式 (三)反反爬虫 1.原理 2.三种方法 二.解决中文乱码 ( ...
- 爬虫学习----解决中文乱码
一.字符编码 在编程的过程中,我们会遇到中文乱码的问题.要解决中文乱码我们就要了解计算机的字符编码,计算机有很多编码方式,因为计算机只能处理数字,因为处理文本的话,就必须先转化为数字.最早的时候计算机 ...
- 爬虫过程中解决html乱码和获取的文本乱码问题
爬虫过程中解决html乱码和获取的文本乱码问题 response1 = requests.get(url=detail_url, headers=headers) responseText1 = re ...
- Python爬虫中文乱码问题(爬虫乱码)
在输出内容时,出现如下图的情况: 解决爬虫中文乱码的步骤 网址编码为gbk 查看网页源代码的head部分的编码: <meta http-equiv="Content-Type" ...
- sqlserver mysql 乱码_SQLServer数据库如何解决中文乱码问题?方法有哪些?
很多使用数据库的人都知道,在安装SQLServer数据库是,如果设置不当就会出现一些中文乱码.主要原因是,很多人在使用默认安装系统时,一般不会考虑到默认排序的规则是拉丁文的排序规则,只是点击下一步,在 ...
- php utf-8读取,PHP读取文件,解决中文乱码UTF-8的方法分析
PHP读取文件,解决中文乱码UTF-8的方法分析,方法,中文,操作技巧,文本,本文 PHP读取文件,解决中文乱码UTF-8的方法分析 易采站长站,站长之家为您整理了PHP读取文件,解决中文乱码UTF- ...
- java txt中文乱码,JAVA读取TXT文件 可解决中文乱码问题
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
- PHP生成PDF完美支持中文,解决TCPDF乱码
PHP生成PDF完美支持中文,解决TCPDF乱码 2011-09-26 09:04 418人阅读 评论(0) 收藏 举报 phpfontsheaderttfxhtml文档 PHP生成PDF完美支持中文 ...
最新文章
- LiveVideoStackCon 2018日程(草稿)发布
- Android外设存储设备的访问及测试
- 诺顿360“偷偷”挖矿被怒喷,杀毒软件手伸向GPU,官方:都是为了用户好
- 红帽linux怎么更新源,redhat Linux配置yum更新源
- 搜索推荐炼丹笔记:评论是怎么影响推荐的?
- Visual Studio 技能GET
- Android Apk包的签名出库、自动编译与混淆
- 产品战略规划十步法ppt_从管理咨询角度谈如何系统地做产品战略规划?
- python最简单的图形编程_Python123
- Hibernate的批量处理-批量更新
- 【语音去噪】基于matlab GUI谱减法+维纳滤波语音去噪(带面板+信噪比)【含Matlab源码 1661期】
- 【数据分享】中国城市统计年鉴_2001-2021年
- 正则表达式同时匹配中英文及常用正则表达式
- 深度强化学习-策略梯度算法深入理解
- 云计算被指变相占土地 专家称去伪存真
- 那让人生生死死的「生态位」
- 蓝色——Love is Blue
- iOS - MVC框架
- 完全限定域名(fully qualified domain name,FQDN,笔记)
- 14.线程进阶操作(join,setDaemon)
热门文章
- (转)关于CNN中平移不变性的理解
- python接口自动化(二十六)--批量执行用例 discover(详解)
- 查看数值类型python_python里怎么查看数据类型
- python语言源程序文件类型_浅谈Python的文件类型
- android 火箭动画,利用动画模拟火箭发射场景
- MyBatis入门到精通——Mybatis入门篇
- 如何在Windows下安装zookeeper?
- 倾斜模型精细化处理_基于倾斜摄影和近景摄影技术的实景三维模型结合(CC与 DPModeler结合)...
- 第3章[3.6] 说透Ext JS的窗口及对话框用法
- oracle11g的用户名是什么,oracle11g默认用户名和密码