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

本文记录了在使用Nutch 2.x版本进行网页爬取时遇到的中文乱码问题及解决过程,包括调整数据库配置和读取BLOB字段的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接触Nutch,版本从1.x换到2.x,各种坑,可能用的人少.要命.

各种排错的时间远远大于学习Nutch时间.伤心

首先是 编译阶段,各种坑 ,一不小心就报错,各种配置文件改改改

http://blog.csdn.net/a897180673/article/details/78392087

好不容易可以使用了,在爬取一个网页后之后,登陆数据库一看,尼玛,乱码

这里写图片描述

还有一个headers的字段,直接显示BLOB

这个是数据是二进制存储的,复制出来,粘贴 到文本文档看看

又是乱码,坑爹!

这里写图片描述

看上去 好像只有 中文乱码 ,其他的还是好的.

但是我们在初期配置的时候 ,各种utf-8 了啊

可惜还是没有用,突然想起来之前做java web 的时候遇到乱码的情况
就是在jdbc连接数据库的时候在后面加utf8

回到Nutch ,修改下/conf/gora.properties文件中的url即可

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver
gora.sqlstore.jdbc.url=jdbc:mysql://192.168.100.20:3306/nutch?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8
gora.sqlstore.jdbc.user=root
gora.sqlstore.jdbc.password=cbas.123

好了,再次编译下

切换到bin目录

再爬取看看

 ./nutch crawl urls -depth 3 -topN 5

这里写图片描述

终于中文了.

把BLOB的内容复制到文本文档 看下

这里写图片描述

fuck,还是乱码

突然意思到 BLOB为二进制字符串,所以可能汉字没有办法存储,要不JDBC读取出来看看?

上代码:


import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.sql.*;

public class Jdbc {
    public static void main(String[] args) {

            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con= DriverManager.getConnection("jdbc:mysql://192.168.100.20:3306/nutch", "root", "123");
            java.sql.PreparedStatement ps=  con.prepareStatement("select content from webpage");
            ResultSet rs=ps.executeQuery();
            if(rs.next()) {
                Blob bb = rs.getBlob(1);
                byte[] b = bb.getBytes(1, (int) bb.length());
                String result = new String(b,"utf-8");
                System.out.println(result);
            }
            } catch (Exception e) {
                e.printStackTrace();
            }
    }
}

跑起来,看看,ok中文显示了!

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值