网络爬虫中的验证码识别
来源:互联网 发布:淘宝旗舰店男装排行榜 编辑:程序博客网 时间:2024/05/24 06:49
网络爬虫遇到的验证码
在写网络,爬虫时,遇到很多网站存在验证码的情形,有其是比较烦的是,爬取数据的每一页都有验证码,如果只有登陆时,存在验证码,这个很好解决,只需将验证码获取后手动输入就行。
但对于每页都有的,这种方式就不能够解决了,最简单的方式,是自动识别验证码,如果验证码识别成功,能过获得数据,则进行解析,如果验证码没办法识别,则刷新一次验证码,继续识别,直到识别验证码成功,并获得数据。
类似,如下网站:
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 Mapping instance.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(); } }}
如下,为程序运行结果:
所以,使用该程序对于简单的验证码,识别效果是很好的,但对于复杂度高一些的验证码,则效果并不是很理想。
阅读全文
0 0
- 网络爬虫中的验证码识别
- 网络爬虫-验证码登陆
- Python2手动识别验证码的爬虫
- 爬虫学习笔记--识别验证码
- 转载识别网络爬虫
- 数据抓取之反爬虫规则:验证码识别
- Python爬虫之自动登录与验证码识别
- python 爬虫登陆学校教务系统之验证码识别
- Python爬虫之自动登录与验证码识别
- Python爬虫之自动登录与验证码识别
- Python爬虫之自动登录与验证码识别
- python2 爬虫爬教务管理,还有验证码识别
- 教务系统,验证码识别,异步加载,java爬虫06
- 正方教务系统爬虫(带验证码识别)
- python爬虫之验证码识别(浅)
- tensorflow训练cnn网络识别验证码
- 【Python网络爬虫学习01】爬取网络验证码
- python中的验证码识别库PyTesser
- 集合之浅谈HashSet
- MySQL day7---MySQL存储过程
- 代码整洁之道-培训笔记
- Kaggle竞赛(1)——Tantic泰坦尼克之灾
- Java 中对象与垃圾回收
- 网络爬虫中的验证码识别
- C#中对ini文件简单操作举例
- [bzoj4196][Noi2015]软件包管理器 树链剖分
- CSDN博客积分规则和获取积分方法
- bash中的转义字符
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC
- 简单笔试题
- Android攻防三
- hdu 1695 莫比乌斯反演