jsoup+htmlunit 爬虫破解验证码,附完整demo

本文介绍了使用jsoup和htmlunit结合破解网站验证码的方法,包括设置爬虫参数、处理验证码图片并识别的过程。通过示例代码展示了如何抓取特定网站的案件信息,适用于网页抓取和数据分析。

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

前言:

        最近是真的有点闲,随手记录一下小白的成长之路。话不多说,下面上干货。主要的方向还是java,正在学习python,所以我现在只介绍java的爬虫实现,后续再更新。。。如果下面所描述的东西有了解的,请直接跳到最后的git地址,自己修改下数据库链接参数,数据库sql附在项目里

ps:有搞不定的网站可以评论找我哦,提供技术支持

一、网页采集工具

百度一下,java的有httpclient、jsoup、webmargic等,python的也有,比如应用广泛的scrapy,还有分布式垂直框架nutch等

二、数据抓取能做什么

抓几百张美女图片,采集新闻、时事、全网搜信息等等,为数据分析提供原材料。反正就是可以业余学点,需要的时候弄着玩。可以借用百度、gogle这些搜索引擎实现很多功能。还可以有下面我所做的。。。

三、抓取法院案件信息、搜集详情、豆瓣、知乎等

举个栗子吧,目标网站:http://12368.szcourt.gov.cn,需要实现的需求,抓取查询人涉案信息

3.1 准备工作:先去抓取代理服务器,放入代理池中,我是从这里抓的http://www.xicidaili.com/,经过筛选,符合要求的才放进去。为啥?因为有些的代理服务器特别坑,毕竟免费的,质量不保证,代理服务器

3.2 所用工具,jsoup+httpclient,这里介绍一下为什么这么用,我尝试学习了5、6个java爬虫工具,selenium貌似功能最强,但是好像对java的兼容不太好,所以把它放在一边了,但基本用法都学会了。他们属于两个不同的工具,都可以实现网页抓取,但是各有优点,也各有缺点,详细信息请问度娘。这里我用htmlunit去抓网页,然后把网页交给jsoup去处理。。。。。好了,后面开始抓

3.3 准备工作做完了,开始敲代码 

先设置构建一个爬虫,类似一个无窗口的浏览器

 // 设置统一参数
    /**
     * <p>Description: 设置一个浏览器爬虫对象</p>
     /
    public WebClient setParams() {
        // 爬取前准备工作
        // 设置浏览器模型,防止爬虫被禁用
        WebClient webClient = new WebClient(BrowserVersion.CHROME);
        // 设置web对象的相关参数
        // 1 启动JS
        webClient.getOptions().setJavaScriptEnabled(true);
        // 2 禁用Css,可避免自动二次请求CSS进行渲染
        webClient.getOptions().setCssEnabled(false);
        //设置代理  
        /

         * ProxyConfig proxyConfig = webClient.getOptions().getProxyConfig();
         * proxyConfig.setProxyHost(listserver.get(0));
         * proxyConfig.setProxyPort(Integer.parseInt(listserver.get(1)));
         */
        //忽略ssl认证  
        webClient.getOptions().setUseInsecureSSL(true);

        // 3 启动重定向
        webClient.getOptions().setRedirectEnabled(true);
        /* webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); */
        // webClient.getOptions().setGeolocationEnabled(true);
        // 4 启动cookie管理
        webClient.setCookieManager(new CookieManager());
        // 5 启动ajax代理
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        // 6 js运行错误时,是否抛出异常
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        // 7 设置超时
        webClient.getOptions().setTimeout(50000);
        // 8 设置js执行超时时间
        webClient.setJavaScriptTimeout(50000);
        return webClient;
    }

基本上就是这些设置,根据不同的需要可以自己进行修改,下面就是主要的部分:

public static String getPageMessage(String url, WebClient webClient, String searchparam, String picSavePath,
            String picType, String appcode) {
        PicRecognize picRecognize = new PicRecognize();
        // 获取随机时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值