网络爬虫遇到的验证码

在写网络,爬虫时,遇到很多网站存在验证码的情形,有其是比较烦的是,爬取数据的每一页都有验证码,如果只有登陆时,存在验证码,这个很好解决,只需将验证码获取后手动输入就行。
但对于每页都有的,这种方式就不能够解决了,最简单的方式,是自动识别验证码,如果验证码识别成功,能过获得数据,则进行解析,如果验证码没办法识别,则刷新一次验证码,继续识别,直到识别验证码成功,并获得数据。
类似,如下网站:
https://gsqcdzhdjpt.yyhj.zjzwfw.gov.cn/pda.do?method=enterPdajdcx

该网站查询一次,就需要输入验证码一次,很烦人。

解决办法

目前验证码自动识别,无非就是自己写算法,利用一些开源工具,或者使用第三方收费的接口。
根据自己所爬数据的网站,选择不同的方式,如对于简单的验证码,完全就可以使用开源软件,如tess4j。



针对这种简单的验证码,是完全可以高效的识别的。

tess4j的使用

首先,在该网站中下载tess4j的安装包。
https://sourceforge.net/projects/tesseract-ocr-alt/files/?source=navbar
比如,我下载的。

下载之后,点击安装就行了,其实我们最想要的是安装之后的这个文件夹,如下截图。

接着,在maven中添加依赖jar包。

<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>3.4.1</version>
</dependency>

等该jar包及其相关依赖jar包下载完成后,使用一下程序便可以识别相关验证码。

package yanzhengma;import java.io.File;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;public class Test {public static void main(String[] args) {try {File imageFile = new File("e:\\login.jpg");//图片位置ITesseract instance = new Tesseract();  // JNA Interface Mappinginstance.setDatapath("F:\\Program Files (x86)\\Tesseract-OCR\\tessdata");//设置tessdata位置instance.setLanguage("osd");//选择字库文件(只需要文件名,不需要后缀名)String result = instance.doOCR(imageFile);//开始识别System.out.println("图片实际为:7588"+"\t图片识别结果为:"+result);//打印图片内容} catch (TesseractException e) {e.printStackTrace();}}
}

如下,为程序运行结果:

所以,使用该程序对于简单的验证码,识别效果是很好的,但对于复杂度高一些的验证码,则效果并不是很理想。

网络爬虫中的验证码识别相关推荐

  1. 网络爬虫笔记—滑动验证码识别

    网络爬虫笔记-滑动验证码识别 一.什么是滑动验证码 点击之前 点击之后 像这种通过滑动图片,补全缺口的方式,就是滑动验证码. 二.识别思路 1)使用selenium库操作谷歌浏览器,打开目标网站:关于 ...

  2. 网络爬虫笔记—图形验证码识别

    网络爬虫笔记-图形验证码识别 <兄弟们,本文章开启了关注后阅读.大家如不想关注,可直接微信搜索"宏蜘蛛"或文章标题,查看文章.> 1.什么是图形验证码 像知网注册界面的 ...

  3. 网络爬虫笔记—图形验证码获取

    网络爬虫笔记-图形验证码获取 1.验证码获取思路 1)使用selenium库操作谷歌浏览器,打开目标网站: 2)对目标网站进行截图,并将图片保存到本地: 3)获取验证码元素节点在屏幕上的位置,即横纵坐 ...

  4. Python爬虫之网站验证码识别(三)

    视频链接:Python爬虫7天速成(2020全新合集)无私分享 Python: 章节p29-p31 文章目录 前言 一.云打码平台使用流程 操作流程 二.代码编写⭐ 2.1 使用超级鹰云平台 2.2 ...

  5. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  6. 盘点一个网络爬虫中常见的一个错误

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 圣朝无阙事,自觉谏书稀. 大家好, ...

  7. 浅谈网络爬虫中广度优先算法和深度优先算法

    前言 做爬虫的,最怕业务简单粗暴的来一句"爬一下XXXX网".比如,"爬一下央广网"(示例链接:http://www.cnr.cn),看着密密麻麻的各种子分类, ...

  8. 爬虫代理和验证码识别

    代理操作 - 目的:为解决ip被封的情况 概念汇总:- 什么是代理?- 代理服务器- 代理和爬虫之间的关联是什么?- 网络爬虫是需要短时间内发送高频的请求,为了保障ip不被封掉,使用代理更换请求对应的 ...

  9. 网络爬虫中进行数据抓取

    以下内容是<用python写网络爬虫>的读书笔记 一.安装firebug lite firebug lite是一个用于在网站中查看调试html,css和javascript的有效工具.它现 ...

最新文章

  1. JNDI学习总结(1)——JNDI入门
  2. 这40张图送给单身程序员,情人节请一笑而过!
  3. SpringBoot—jasypt加解密库的使用方法
  4. Python socket TCP
  5. lucene开发序之luke神器
  6. Cocos2d-html5 2.2.2的屏幕适配方案
  7. linux dhcp 绑定mac地址,●DHCP协议的功能是 (58) 。在Linux中提供DHCP服务的程序是 (59) ;DHCP服务将主机的MAC地址和IP地 - 赏学吧...
  8. ie浏览器float right 向下错位解决办法
  9. EF安装和更新数据库
  10. 案例7-1 模拟EXCEL排序 (25 分)(根据结构体某一元素排序)
  11. HTML5前端教程分享:JavaScript学习指南
  12. linux网络测速工具,linux 测试网速的相关工具
  13. 使用MySQL Workbench备份和还原数据库
  14. 【转载】Markdown编辑器如何在标题上添加序号
  15. matlab 仿真步长,[转载]matlab 仿真步长设置
  16. 2016年最新苹果开发者账号注册申请流程最强详解!
  17. SHT10温湿度传感器
  18. 弱网测试究竟要怎么做,才能防止漏测?
  19. 如何用coda虚拟环境分隔多个tensorflow版本
  20. linux su 不能输密码错误,su - root正确输入密码但是登录不了系统,报错su: Permission denied...

热门文章

  1. Vue.js 内部运行机制之总结 常见问题解答
  2. 容器编排技术 -- Kubernetes kubectl create service clusterip 命令详解
  3. Hibernate SessionFactory
  4. Java中的记录器 - Java日志示例
  5. 局域网linux唤醒windows,局域网唤醒 (WOL - Wake on LAN) | 远程启动计算机- ManageEngine OpUtils...
  6. mysql5.7 gruop by报错this is incompatible with sql_mode=only_full_group_by
  7. 「mac版」支持flash的浏览器,谷歌浏览器Chrome、火狐浏览器Firefox
  8. linux查看openjdk的安装的路径
  9. “已使用指定的进程(“Web Management Service”)连接到远程计算机,但未能验证服务器的证书”的解决方案
  10. mysql修改表结果