zoukankan      html  css  js  c++  java
  • WebMagic0.73版本无法爬取到数据

    初学爬虫, 今天稍微接触了WebMagic, 刚搭建环境就遇到了问题, 我所使用的版本是最新的 0.73, 该版本对SSL的并不完全,如果是直接从Maven中央仓库下载依赖,在爬取只支持TLS1.2, 即只能用https协议访问的网站时会有SSL的异常抛出 javax.net.ssl.SSLException: Received fatal alert: protocol_version, 并且无法爬取到数据

    参考作者的 github 得知解决方法大致有两个, 一是等作者更新发布的 0.74 版本(已更新), 二是修改 HttpClientGenerator 类中的 buildSSLConnectionSocketFactory 方法, 可以直接在本项目中解决, 详情参考 WeJan's Blog

    但是这种方法只能在当前项目中使用, 要想一劳永逸, 最好还是直接在本地maven仓库中修改, 首先可以下载 github 上的源码到本地

    http://image.ayulong.cn/public/data/2020/md/myerror/wenjian225737.png

    将 webmagic-core导入到idea中, 找到 HttpClientGenerator

     按照作者所提供的解决办法, 找到 buildSSLConnectionSocketFactory 方法并修改

     private SSLConnectionSocketFactory buildSSLConnectionSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
            
            return new SSLConnectionSocketFactory(createIgnoreVerifySSL(), new String[]{"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"},
                    null,
                    new DefaultHostnameVerifier());
        }

    因为抛出了异常, 所以在使用 buildSSLConnectionSocketFactory 方法时需要处理异常, 所以修改上面的构造方法为:

    public HttpClientGenerator() {
            Registry<ConnectionSocketFactory> reg = null;
            // 处理异常
            try {
                reg = RegistryBuilder.<ConnectionSocketFactory>create()
                        .register("http", PlainConnectionSocketFactory.INSTANCE)
                        .register("https", buildSSLConnectionSocketFactory())
                        .build();
            } catch (KeyManagementException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            connectionManager = new PoolingHttpClientConnectionManager(reg);
            connectionManager.setDefaultMaxPerRoute(100);
        }

    修改完之后将 webmagic-core 项目导入本地 maven 库

     

     安装成功后再使用 WebMagic 0.73 版本抓取https协议网站就没问题了

  • 相关阅读:
    java中&和&&
    java保留字
    最优路径算法合集(附python源码)(原创)
    十大经典排序算法(python实现)(原创)
    电子欠款单设想(原创)
    羽毛球友谊赛规则(附带程序)(原创)
    基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
    lazy_import源码解析(原创)
    多线程的音频打标记的python实现(原创)
    关于塔防游戏的浅析(原创)
  • 原文地址:https://www.cnblogs.com/zouhong/p/14196618.html
Copyright © 2011-2022 走看看