我按照官网的步骤,部署好了Maven,复制了他的示例代码,运行直接报错;报错的原因是因为 WebMagic默认的HttpClient只会用TLSv1去请求,对于某些只支持TLS1.2的站点 ,而官网抓取GitHub正好是TLS1.2的站点………
关于这个问题的解决思路,这个框架的作者已经给出了临时解决方案(https://github.com/code4craft/webmagic/issues/701)。
我来说一下具体操作:首先在你的工程目录创建以下的包结构
us.codecraft.webmagic.downloader
在downloader包下面创建一个HttpClientGenerator类,这个类更改之后的代码,我放在本文最后,可以复制粘贴编译使用;之后还记得那个Hello World吗?没错打开CMD,输入下面代码,将他编译成一个.class文件;
javac HttpClientGenerator.java
然后打开你的Maven本地仓库的路径,找到路径为
us\codecraft\webmagic-core\0.7.3 下面的webmagic-core-0.7.3.jar文件,用压缩软件打开,最后直接将你编译后的.class文件替换掉压缩包里\us\codecraft\webmagic\downloader\的HttpClientGenerator.class文件即可
附:HttpClientGenerator.java
package us.codecraft.webmagic.downloader;
import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.client.CookieStore;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.