爬虫day03

网页去重解决方案
1.指纹码对比
	最常见的去重方案是生成文档的指纹门。例如对一篇文章进行MD5加密生成一个字符串,我们可以认为这是文章的指纹码,再和其他的文章指纹码对比,一致则说明文章重复。但是这种方式是完全一致则是重复的,如果文章只是多了几个标点符号,那仍旧被认为是重复的,这种方式并不合理。

2.BloomFilter
	这种方式就是我们之前对url进行去重的方式,使用在这里的话,也是对文章进行计算得到一个数,再进行对比,缺点和方法1是一样的,如果只有一点点不一样,也会认为不重复,这种方式不合理。

3.KMP算法
	KMP算法是一种改进的字符串匹配算法。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。能够找到两个文章有哪些是一样的,哪些不一样。这种方式能够解决前面两个方式的“只要一点不一样就是不重复”的问题。但是它的时空复杂度太高了,不适合大数据量的重复比对。	

4.SimHash算法
	生成simhash签名,通过海明距离计算文章相似度
使用方式:https://github.com/wolf457635210/SimHasheRepository下载maven工程,安装到本地maven仓库
    <dependency>
        <groupId>com.lou</groupId>
        <artifactId>simhasher</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
//1.生成simhash签名
SimHasher hash = new SimHasher(String content);
//2.打印simhash签名
BigInteger signature = hash.getSignature();
//3.计算海明距离
int HammingDistance = hash.getHammingDistance(hash2.getSignature());
反爬虫解决方案
代理服务器:
	客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。如果代理服务器被目标服务器列入黑名单,可以继续更换另外一台代理服务器

免费代理服务器:
米扑代理
https://proxy.mimvp.com/free.php
西刺免费代理IP
http://www.xicidaili.com/

代理服务器的使用:
//1.设置代理服务器
	HttpClientDownloader downloader = new HttpClientDownloader();
downloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("代理服务器IP","代理服务器端口")));
//2.Spider绑定代理服务器
	Spider.create(new JobProcessor())
		  .addUrl("http://www.baidu.com")
		 .setDownloader(downloader)
		.run();
TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的机器上 现在,打开控制台并执行以下的java命令。 OS 任务 命令 Windows 打开命令控制台 c:\> java -version Linux 打开命令终端 $ java -version Mac 打开命令终端 machine:~ joseph$ java -version 让我们来验证所有的操作系统的输出: OS 输出 Windows java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) Linux java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) Mac java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) 如果你没有安装Java,安装Java软件开发工具包(SDK)点击: http://www.oracle.com/technetwork/java/javase/downloads/index.html. 我们假设本教程中安装和使用Java1.7.0_25版本。 第二步:设置JAVA环境 设置JAVA_HOME环境变量指向的基本目录的位置,在你的机器上安装Java。例如: OS 输出 Windows 设置环境变量 JAVA_HOME 为 C:\Program Files\Java\jdk1.7.0_25 Linux export JAVA_HOME=/usr/local/java-current Mac export JAVA_HOME=/Library/Java/Home 添加Java编译器的位置,系统路径。 OS 输出 Windows Append the string; C:\Program Files\Java\jdk1.7.0_25\bin to the end of the system variable, Path. Linux export PATH=$PATH:$JAVA_HOME/bin/ Mac not required 验证Java安装使用命令java-version如上所述。 第3步:下载TestNG的归档文件 下载最新版本的TestNG的jar文件,详细请点击访问 http://www.testng.org.。在写这篇教程的时候,我下载TestNG中-6.8.jar,并将 testng-6.8.jar 其复制到 C:\>TestNG 目录。 OS 压缩文件名 Windows testng-6.8.jar Linux testng-6.8.jar Mac testng-6.8.jar 步骤4:设置TestNG的环境 设置TESTNG_HOME环境变量指向TestNG的jar 存放在您的机器上的基本目录位置。假设,我们已经储存了testng-6.8.jar, TestNG各种操作系统上的文件夹如下: OS 输出 Windows Set the environment variable TESTNG_HOME to C:\TESTNG Linux export TESTNG_HOME=/usr/local/TESTNG Mac export TESTNG_HOME=/Library/TESTNG 第5步:设置CLASSPATH变量 设置CLASSPATH环境变量指向TestNG的jar文件位置。假设,我们已经储存了testng-6.8.jar, TestNG在各种操作系统上的文件夹如下: OS 输出 Windows 设置环境变量 CLASSPATH 为 %CLASSPATH%;%TESTNG_HOME%\testng-6.8.jar; Linux export CLASSPATH=$CLASSPATH:$TESTNG_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值