nutch-乱码解决

在Nutch的搜索框中输入中文,点击“搜索”按钮之后,可以看到搜索框中的关键字是乱码,搜索结果也为空。网上有很多文章都谈到了这个现象,这不是Nutch的问题,而是Tomcat没有对uri做编码造成的。解决的办法也很简单,在Tomcat的安装目录下找到”conf/server.xml”文件,在"Connector port=”8080″ ”那一节添加URIEncoding="UTF-8" useBodyEncodingForURI="true"可以了。完整的配置可能是下面这个样子:

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8"

useBodyEncodingForURI="true"/>

修改这个文件时要特别注意,把代码复制过去后,因为字符集的问题,可能要把空格和"重新输入,否则会造成tomcat无法启动

解决方法: 修改cached.jsp


+++ cached.jsp.patched 2009-02-18 12:43:26.000000000 -0500
@@ -40,6 +40,7 @@
.getLocale().getLanguage();

Metadata metaData = bean.getParseData(details).getContentMeta();
+ Metadata parseMetaData = bean.getParseData(details).getParseMeta();

String content = null;
String contentType = (String) metaData.get(Metadata.CONTENT_TYPE);
@@ -49,7 +50,7 @@
// but I don't know how to emit 'byte sequence' in JSP.
// out.getOutputStream().write(bean.getContent(details)) may work,
// but I'm not sure.
- String encoding = (String) metaData.get("CharEncodingForConversion");
+ String encoding = (String) parseMetaData.get("CharEncodingForConversion");
if (encoding != null) {
try {
content = new String(bean.getContent(details), encoding);

 

Debug过程:

在Tomcat下查看Nutch抓取的页面的缓存时,发现非英语系的页面缓存显示为乱码,例如中文gb2312编码的网页

1. 首先先想dump一下segment看看是否保存了正确的raw data。

在CentOS 5.2下dump segment (bin/nutch readseg -dump crawl/segments/2009* outputdir)的时候,发现如果是缺省的locale(en_US.UTF-8),则dump的结果Content域显示乱码;如果locale是zh_CN,则dump的结果Content域显示正常,这说明segment保存了正确的raw data。

2. 查看某dump的结果片断


Parse Metadata: CharEncodingForConversion=GB2312 OriginalCharEncoding=GB2312

发现CharEncodingForConversion=GB2312 OriginalCharEncoding=GB2312都已正确设置

3. 查看cached.jsp的源代码

Metadata metaData = bean.getParseData(details).getContentMeta();

String content = null;
String contentType = (String) metaData.get(Metadata.CONTENT_TYPE);
if (contentType.startsWith("text/html")) {
// FIXME : it's better to emit the original 'byte' sequence
// with 'charset' set to the value of 'CharEncoding',
// but I don't know how to emit 'byte sequence' in JSP.
// out.getOutputStream().write(bean.getContent(details)) may work,
// but I'm not sure.
String encoding = (String) metaData.get("CharEncodingForConversion");
if (encoding != null) {
try {
content = new String(bean.getContent(details), encoding);
}
catch (UnsupportedEncodingException e) {
// fallback to windows-1252
content = new String(bean.getContent(details), "windows-1252");
}
}
else
content = new String(bean.getContent(details));
}发现其去Content Metadata中找”CharEncodingForConversion”,显然找不到,于是作了最上面(解决办法之中)的修改,使之去Parse Metadata中读取”CharEncodingForConversion”,然后解码,这时候发现缓存页面显示正确了,乱码消失了
由nutch readseg -dump 中文编码乱码想到的…… NULL 博文链接:https://wujay.iteye.com/blog/1526902 立即下载

相关推荐

【校园网代理连接问题】已解决,“该设备或资源(Web 代理)未设置为接受端口“7890”上的连接“

我遇到这个问题很多次。每次都是vpn的问题,不止通俗意义上的梯子(clash之类的),还包括校园网vpn。点击“ 拨号和虚拟专用网络设置”中的“设置”, 关闭代理服务器。在打开vpn后或者关闭vpn后无法浏览网页,网页诊断显示“关闭“手动设置代理”中的“使用代理服务器”,关闭对应的本地代理即可。

聆雨。 1万+

nutch-1.8爬虫网页中文乱码的处理

Nutch1.8在使用默认网页解析插件解析网页文本时,有些网页会出现在乱码问题。

RYP_S 的专栏 2803

傅里叶红外(FT-IR):Origin数据处理、光谱绘图、曲线优化、图形美化

双击 X 轴,选择“轴线和刻度线”,设置粗细为“2”(较常用的粗细度),主刻度和次刻度为“朝内”,然后在此对话框内选择左轴,设置粗细为“2”,主刻度和次刻度为“无”,上轴和右轴同左轴。(4)在第二个图层基础上新建第三个图层,针对第二组数据重复上述中(1)和(2)的操作,再添加第三组数据的折线图,并重复上述中(3)的操作。FTIR 光谱上的峰只有相对的强弱,因此只分析一个光谱上的一个峰的强度大小并无意义,一般分析两个光谱在同一位置的峰强相对大小,或者分析同一光谱不同位置的峰强相对大小并与另一光谱进行比较。

qiushireader的博客 3932

Nutch部署及相关问题(中文乱码等)修正

Nutch介绍 Nutch是一个开源的WEB搜索引擎,能提供高质量的搜索服务。 对于一些内部系统或中小型网站来说是一个不错的全文搜索解决方案。 Nutch的部署 最新版本的Nutch可从Nutch的官网获取。下载后直接解压就可以进行使用。 由于我使用的是windows系统,这里以windows下部署进行介绍。 Nutch爬虫设置 Nutch本身包含一个对目标...

nhy520 221

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Models

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),大大减少需要的算力。在RGB空间:编码器encoder:,将x压缩成低维表示解码器decoder: D,将低维表示z还原成原始图像空间。1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

weixin_57974242的博客 1万+

自动权重化图卷积网络(Auto-Weighted GCN)算法在反洗钱识别中的应用及代码实现

该算法通过自动学习节点之间的权重信息,能够更好地捕捉AML数据中的关系和结构,从而提高反洗钱识别的准确性和效果。传统的AML识别方法通常依赖于专家定义的规则和手动提取的特征,但这些方法在应对大规模和复杂的数据时存在一定的局限性。GCN通过在图上执行卷积操作来捕捉节点之间的关系和结构信息,从而实现对图数据的学习和表示。自动权重化图卷积网络是一种基于GCN的改进算法,能够自动学习节点之间的权重信息,从而更好地捕捉图中的关系。利用自动计算的权重值执行图卷积操作。根据节点之间的相似度,计算每个节点的权重。

syntax_api860的博客 376

Nutch2.X使用入坑总结-爬取数据乱码处理

接触Nutch,版本从1.x换到2.x,各种坑,可能用的人少.要命. 各种排错的时间远远大于学习Nutch时间.伤心 首先是 编译阶段,各种坑 ,一不小心就报错,各种配置文件改改改 http://blog.youkuaiyun.com/a897180673/article/details/78392087 好不容易可以使用了,在爬取一个网页后之后,登陆数据库一看,尼玛,乱码 还有一个head...

翻身了,咸鱼! 819

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第二期(真题+解析)| 网络协议的三个核心要素;交互式系统中的非剥夺策略;中断和陷入的区别;可变分区管理中的硬件机制;数据库系统的优点

本篇博客将讨论军队文职面试(计算机类)的几个关键问题。我们将介绍网络协议的核心要素(帮助你理解网络通信的基本原理)、交互式系统中的非剥夺策略(解释为何这是一个优秀的策略以及其对用户体验、系统稳定性和可预测性的影响)、中断和陷入的区别(从引起原因、处理机制、权限级别和应用等方面进行阐述)、可变分区管理的硬件机制以及数据库系统与文件系统的优点比较。通过阅读本文,您将深入了解这些话题,为面试准备和实际应用提供有价值的知识。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1707

nutch网页快照乱码解决方法

修改nutch\cached.jsp, 将content = new String(bean.getContent(details)) 修改为content = new String(bean.getContent(details),"utf-8") 在画红框的地方加上UTF-8即可 以下内容参考:http://blog.youkuaiyun.com/xiaomage_cn/archive/201

WitsMakeMen的专栏 2773

LangGraph-StateGraph 和 Graph API 源码分析

摘要: StateGraph是LangGraph的核心API,用于构建有状态工作流图。本文分析了其实现原理,包括: 核心类关系:StateGraph(构建器)和CompiledStateGraph(继承自Pregel的可执行图) 关键流程:状态模式到通道的映射、节点到PregelNode的转换 实现特点: 支持TypedDict和Pydantic两种状态模式 自动选择通道类型(LastValue或BinaryOperatorAggregate) 通过映射函数处理节点输入输出 边实现基于通道写入机制 编译过程

838

NSIS教程(6): 使用第三方插件

NSIS内置了很多指令,这些指令可以满足我们基本需求,但难免会遇到NSIS没有内置的功能,如进程操作,后台运行(即多线程),7z压缩等等,这个时候我们就需要借助第三方插件来满足我们所需要的功能了。 一、插件获取 NSIS官方收录插件的网址是:http://nsis.sourceforge.net/Category:Plugins,我们可以在这个网站上查找和下载我们需要的插件,该网站上针对每

while(1) { smile(); } 9万+

nutch 乱码 解决方案

nutch对中文的支持还不完善,需要修改tomcat 文件夹下conf/server.xml文件  [root@localhost tomcat]#vi conf/server.xml     增加两句,修改为     maxThreads="150" minSpareThreads="25"  maxSpareThreads="75"     enableLookups="false"  red

卤蛋爱编程 363

OpenMM | PDBFixer 用于蛋白质预处理

PDBFixer 用于蛋白质预处理

DrugOne 3006

nutch-乱码解决(转)

ubuntu下nutch-1.0的安装和配置错误排除(原创) 国内部份建立在云计算之上的网站 nutch-乱码解决搜索引擎与人工智 2009-05-13 12:02:49 阅读75 评论0 字号:大中小 订阅 在Nutch的搜索框中输入中文,点击“搜索”按钮之后,可以看到搜索框中的关键字是乱码,搜索结果也为空。网上有很多文章都谈到了这个现象,这不是Nutch的问题,而是T...

Feythin Lau 223

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Nutch解析网页乱码解决方案

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33785108的博客 89

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

搜索引擎迈进三 nutch 乱码解决一

nutch测试报告nutch页面专题nutch 经典文章专题本站搜索更多关于“nutch 界面乱码”的内容 【转】Nutch部署及相关问题(中文乱码等)修正 2009-03-09 16:58 分类:学习空间 字号: 大大  中中  小小 来源:http://vicallo

bingdongguke的专栏 1396

Nutch1.6解析网页乱码解决方案

Nutch1.6在使用默认网页解析插件解析网页文本时,有些网页会出现在乱码问题。出现乱码的原因分析:parse-html插件在解析网页文本时,会先使用正则表达匹配出网页的编码。源码如下: private static Pattern metaPattern =     Pattern.compile("&lt;meta\\s+([^&gt;]*http-equiv=(\"|')?content...

iteye_13226的博客 200

转 nutch网页快照乱码解决方法

修改apache-tomcat-7.0.55\webapps\nutch-1.2下的cached.jsp将content = new String(bean.getContent(details)) 修改为content = new String(bean.getContent(details),"utf-8")在画红框的地方加上UTF-8即可以下内容参考:http://blog.csdn.ne...

weixin_34056162的博客 140

Nutch中的乱码完全解决方案

页面乱码与Tomcat的配置有关。maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″enableLookups=”false” redirectPort=”8443″ acceptCount=”100″connectionTimeout=”20000″ disableUploadTimeout=”true”URIEncoding

boybluesky的专栏 2706

Nutch cached乱码问题解决办法

在cached.jsp页面中,原来用于取得字符集的代码是通过取得ParseData的ContentMeta 来得: Metadata metaData = bean.getParseData(details).getContentMeta(); String content = null; String contentType = (String) metaData.get(Metadat

yiihsia的学习阵地 1175
上一篇: nutch-乱码解决
下一篇: ubuntu下nutch-1.0的安装和配置错误排除
deepfuture
博客等级 码龄17年 210粉丝 1287原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值