架构师

您现在的位置是:首页 > 程序人生 > 网络爬虫

网络爬虫

Java爬虫第18课:网页(文本)去重之SimHash算法使用

架构师小跟班 2020-07-16 网络爬虫
导入simhash工程参考项目:https://github.com/CreekLou/simhash.git这个项目不能直接使用,因为jar包的问题,需要进行改造。导入工程simhash,并打开测试用例。测试simhash按照测

导入simhash工程

参考项目:https://github.com/CreekLou/simhash.git

这个项目不能直接使用,因为jar包的问题,需要进行改造。

导入工程simhash,并打开测试用例。(具体导入步骤参考博文:https://www.jiagou1216.com/life/crawler/1004.html

测试simhash

按照测试用例的要求,准备两个文件,就是需要进行对比的文章

执行测试用例,结果如下

案例整合

需要先把simhash安装到本地仓库

在案例的pom.xml中加入以下依赖

<!--simhash网页去重-->
<dependency>
    <groupId>com.lou</groupId>
    <artifactId>simhasher</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

修改代码

@Component
public class TaskTest {
    @Scheduled(cron = "0/5 * * * * *")
    public void test() {
        System.out.println(LocalDateTime.now()+"任务执行了");
        String str1 = readAllFile("D:/test/testin.txt");
        SimHasher hash1 = new SimHasher(str1);
        //打印simhash签名
        System.out.println(hash1.getSignature());
        System.out.println("============================");
        String str2 = readAllFile("D:/test/testin2.txt");
        //打印simhash签名
        SimHasher hash2 = new SimHasher(str2);
        System.out.println(hash2.getSignature());
        System.out.println("============================");
        //打印海明距离        System.out.println(hash1.getHammingDistance(hash2.getSignature()));
    }
    public static String readAllFile(String filename) {
        String everything = "";
        try {
            FileInputStream inputStream = new FileInputStream(filename);
            everything = IOUtils.toString(inputStream);
            inputStream.close();
        } catch (IOException e) {
        }
        return everything;
    }
}

启动项目控制台显示:

文章评论