系列文章目录

python爬虫目录


文章目录

  • 系列文章目录
  • 前言
  • 一、图形验证码识别技术
  • 二、安装
    • 1、Linux系统
    • 2、Mac系统
    • 3、Windows系统
  • 三、在命令行中使用tesseract识别图像
  • 四、在代码中使用tesseract识别图像
  • 五、用pytesseract处理网站图形验证码

前言

摘录自B站对应课程笔记
不愧是清华大佬!把Python网络爬虫讲得如此简单明了!从入门到精通保姆级教程(建议收藏)

以下是本篇文章正文内容,下面案例可供参考


一、图形验证码识别技术

阻碍我们爬虫的。有时候正是在登录或者请求一些数据时候的图形验证码。因此这里我们讲解一种能将图片翻译成文字的技术。将图片翻译成文字一般被成为光学文字识别(Optical Character Recognition),简写为OCR。实现OCR的库不是很多,特别是开源的。因为这块存在一定的技术壁垒(需要大量的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很高的商业价值。因此开源的比较少。这里介绍一个比较优秀的图像识别开源库:Tesseract。

Tesseract:
Tesseract是一个OCR库,目前由谷歌赞助。Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,他可以通过训练识别任何字体。

二、安装

1、Linux系统

可以在以下链接下载源码自行编译。
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
或者在ubuntu下通过以下命令进行安装:

sudo apt install tesseract-ocr

2、Mac系统

#用Homebrew即可方便安装:
brew install tesseract

3、Windows系统

在以下链接下载可执行文件,然后一顿点击下一步安装即可(放在不需要权限的纯英文路径下):
https://github.com/tesseract-ocr/ 或 https://github.com/UB-Mannheim/tesseract/wiki

安装时可以将语言包选上(比如不选择的话,默认的只能解析英文)

设置环境变量

安装完成后,如果想要在命令行中使用Tesseract,那么应该设置环境变量。Mac和Linux在安装的时候就默认已经设置好了。在Windows下把tesseract.exe所在的路径添加到PATH环境变量中。

还有一个环境变量需要设置的是,要把训练的数据文件路径也放到环境变量中。
在环境变量中,添加一个TESSDATA_PREFIX=C:\path_to_tesseractdata\teseractdata

输入命令tesseract --list-langs 可以支持的语言

输入命令 tesseract b.png b -l chi_sim :使用中文识别 b.png 图片,保存到 b.txt 文件中

三、在命令行中使用tesseract识别图像

如果想要在cmd下能够使用tesseract命令,那么需要把tesseract.exe所在的目录放到PATH环境变量中。然后使用命令:tesseract 图片路径 文件路径。

tesseract a.png a

那么就会识别出a.png中的图片,并且把文字写入到a.txt中。如果不想写入文件直接想显示在终端,那么不要加文件名就可以了。

四、在代码中使用tesseract识别图像

在Python代码中操作tesseract。需要安装一个库,叫做pytesseract。通过pip的方式即可安装:

pip install pytesseract

并且,需要读取图片,需要借助一个第三方库叫做PIL。通过pip list看下是否安装。如果没有安装,通过pip的方式安装:

pip install PIL

注意:高版本中PIL库包含在Pillow库中,再次输入pip install Pillow

使用pytesseract将图片上的文字转换为文本文字的示例代码如下:

import pytesseract  # 导入pytesseract库
from PIL import Image  # 导入 Image 库# 指定 tesseract.exe 所在路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract-OCR\tesseract.exe"image = Image.open("a.png")  # 打开英文图片
text = pytesseract.image_to_string(image=image)
print(text)
print(">>" * 10)
image = Image.open("b.png")  # 打开中文图片
text = pytesseract.image_to_string(image=image, lang='chi_sim')
print(text)

五、用pytesseract处理网站图形验证码

import pytesseract
from urllib import request
from PIL import Image
import time# 指定 tesseract.exe 所在路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract-OCR\tesseract.exe"while True:filename = "captcha.png"captcha_url = "http://111.111.222.222/include/xxx.php?"request.urlretrieve(captcha_url, "captcha.png")image = Image.open(filename)text = pytesseract.image_to_string(image)print(text)time.sleep(2.5)
# 并不是所有都能识别出来

4.3-python爬虫之图形验证码识别相关推荐

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

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

  2. Python爬虫过程中验证码识别的三种解决方案

    在Python爬虫过程中,有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是人阅读访问还是机器爬虫.验证码问题看似简单,想做到准确率很高,也是一件不容易的事情.为了更好学习爬虫,后续推文中将 ...

  3. python点触图形验证码识别_GitHub - AaronJny/captcha_detection: 点选式验证码识别方案...

    方案要点: 点选式验证码的一般解决流程 如何使用 xyolo 训练自己的目标检测模型 不借助 OCR 功能解决中文验证码的识别问题 爬虫,反爬虫,反反爬虫--一个无限循环. 验证码是反爬虫手段中的常用 ...

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

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

  5. python爬虫之图片验证码识别

    将图片翻译成文字的技术被称为光学文字识别,即OCR(Optical Character Recognition)技术 Tesseract 是有谷歌赞助的,目前公认最优秀.最准确的开源OCR库 安装 下 ...

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

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

  7. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)

    # I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...

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

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

  9. 基于selenium实现12306的登录操作(图形验证码识别)

    说明 12306 会有如下一个图形验证码识别点击,所以必须得先点击正确图片,才能继续进行操作. 基本步骤 selenium打开对应网站,并进行截图 将图片截取出对应验证码所在图片 通过超级鹰识别出要点 ...

  10. 基于Python的KNN数字验证码识别

    一.主要内容 本项目基于Python爬虫爬取验证码图片,对图片进行去噪.分割,通过KNN算法训练模型,实现验证其准确率. 二.系统流程 首先从指定的网页中爬取验证码图片数据,然后对数据进行一个去噪和分 ...

最新文章

  1. Python-pcl 随机采样一致性算法
  2. 语言中knitr_R语言软件包的批量引用
  3. github 笔记
  4. stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)...
  5. Linux下服务器模型 【转载】
  6. volley 调用php接口,使用Volley发送帖子请求并使用PHP接收
  7. 【python】用正则表达式进行文字局部替换
  8. ubuntu下查看进程端口
  9. 齿轮箱常见故障数据_齿轮箱故障分析和维护使用
  10. iOS中的UIView的基本属性1
  11. android preferenceActivity的用法
  12. POJ1546(进制转换)
  13. PSP超强自制系统3.52 M33最新傻瓜安装指南(Dark Alex-OE系统接班人)
  14. C语言题目:输出三角形面积和周长 (15 分)
  15. 联想笔记本电脑电池修复
  16. falcon-agent模块代码里执行sys.CmdOutBytes命令导致的问题
  17. 保证线程安全的10个小技巧
  18. 手把手教你如何用VBA统计问卷调查表
  19. 单片机Fault故障常见应对办法
  20. 以本职工作为挡箭牌推托,久而久之,你就只能原地踏步。

热门文章

  1. 实验6 - 家中的电视
  2. 彩信文件服务器,彩信服务器怎么设置
  3. 吊打jd_seckill,Go语言版免配置抢茅台程序,实力接盘~
  4. Java实战项目-移动电商秒杀系统seckill优化
  5. android 验证手机、邮箱格式
  6. lbs mysql_使用mysql来实现lbs排序
  7. HTTP Live Streaming基础知识
  8. 前端性能优化(三)——浏览器九大缓存方法
  9. 网络时钟系统(子母钟系统)技术应用方案
  10. 时钟系统(NTP子母钟系统)如何为高铁系统保驾护航