首页 > 编程语言 >python练习-爬虫

python练习-爬虫

时间:2023-06-22 17:35:27浏览次数:41  
标签:tesseract python 练习 爬虫 验证码 pytesseract import OCR response

场景:

1、网址hppt://xxx.yyy.zzz.cn
2、打开网页后显示 :

 

 3、填上姓名 身份证和验证码,点击查询后,返回查询结果。

 4、页面有cookie。

方案一:

  1. 程序中嵌入浏览器根据网址打开得到页面,
  2. 然后程序读取记录自动填写数据,
  3. 程序截取验证码图片,然后解析,并且填入验证码
  4. 然后程序点击查询得到查询页面,
  5. 再从查询结果页面DOM解析得到相关数据

方案二:

采用Python。真是牛逼得一塌糊涂。

import requests
from PIL import Image
import pytesseract

# 获取cookie
session = requests.Session()
response = session.get("http://example.com")
cookie = response.cookies.get_dict()

# 发送HTTP请求,获取响应数据
headers = {
    "Cookie": "; ".join([f"{key}={value}" for key, value in cookie.items()]),
}
response = session.get("http://example.com", headers=headers)
content = response.text

# 解析响应数据,获取验证码URL
start_position = content.find('<img src="/verifyCode')
end_position = content.find('"', start_position + 10)
captcha_url = 'http://example.com' + content[start_position + 10:end_position]

# 发送带cookie的HTTP请求,获取验证码的二进制数据
response = session.get(captcha_url, headers=headers)
captcha_data = response.content

# 将二进制图片保存为本地文件
with open('captcha.png', 'wb') as f:
    f.write(captcha_data)

# 识别图片中的文字
image = Image.open('captcha.png')
code = pytesseract.image_to_string(image)

# 打印验证码内容
print("验证码内容:", code)
# 7386

 

至此,关键问题得到解决。

注意得问题:

1、安装requests
2、安装PIL 
3、安装pytesseract。其中要另外单独安装与pytesseract配套的Python的OCR识别库。
4.1下载OCR识别库地址 https://digi.bib.uni-mannheim.de/tesseract/

 根据你系统进行选择。

4.2下载OCR安装识别库

其中:

 

 

4.3配置OCR路径:

4.3.1看一下你安装得目录。如:D:\Program Files\Tesseract-OCR\tesseract.exe

4.3.2系统环境变量中,把D:\Program Files\Tesseract-OCR\tesseract.exe配置进去。

4.4.找到脚本文件 pytesseract.py。编辑修改:

tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'

 

 

from os import remove
from os.path import normcase
from os.path import normpath
from os.path import realpath
from pkgutil import find_loader
from tempfile import NamedTemporaryFile
from time import sleep

from packaging.version import InvalidVersion
from packaging.version import parse
from packaging.version import Version
from PIL import Image


tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'

numpy_installed = find_loader('numpy') is not None
if numpy_installed:
    from numpy import ndarray

pandas_installed = find_loader('pandas') is not None
if pandas_installed:
    import pandas as pd

DEFAULT_ENCODING = 'utf-8'

 

 5.可能出现得问题:

常见问题:FileNotFoundError:[WinError 2]系统找不到指定文件。

解决办法:

打开文件pytesseract.py,找到如下代码,将tesseract_cmd的值修改为全路径,再次使用就不会报这个错了。

没了,goodluck!

 


 

标签:tesseract,python,练习,爬虫,验证码,pytesseract,import,OCR,response
From: https://www.cnblogs.com/usegear/p/17498031.html

相关文章

  • python 将中文数字转换成阿拉伯数字
    日常遇到的中文数字主要有两种情况:1.“二零零一”这种类型,只包含[0-9]对应的十个中文字,需要转换成数字:2001。这种情况的转换十分简单。2.“三百二十一”这种类型,还有“十百千万亿……”等汉字,需要转换成数字:321,这种情况比较复杂。考虑:1.“四千三百二十一”,即万以内的数......
  • matlab练习程序(无迹变换)
    当数据通过非线性函数后,分布不再是高斯分布时,可以用无迹变换估计新数据的均值与方差。算法原理就是在原始数据均值周围根据方差选取一些待使用点,然后将这些点通过非线性函数,再通过加权平均的方式求出新分布的均值与方差。如果我们选取的点非常多,并且将这些点都通过非线性函数,再......
  • python通过字典生成随机城市
    先把省和城市存入一个字典中用到random模块中的choice方法,在列表中随机选一个元素。 importrandom省=random.choice(list(city.keys()))#把字典的键表转换成列表,再随机选一个市=random.choice(city[省])#指定省后,在城市列表中随机选一个print(省,市) ......
  • Python | import json模块详解
    json是Python内置的一个用于处理JSON数据的模块。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于Web应用程序之间的数据传输。json模块提供了四个主要的方法:json.dumps()-将Python对象转换为JSON格式的字符串。json.loads()-将JSON格式的字符串转换为Py......
  • 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例|附代码数据
    全文下载链接:http://tecdat.cn/?p=23848最近我们被客户要求撰写关于决策树的研究报告,包括一些图形和统计输出。在本文中,决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题决策树算法将数......
  • 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法
    一、介绍蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频+代码视频+完整......
  • 鸟类识别系统Python+Django+TensorFlow+卷积神经网络算法【完整代码】
    一、介绍鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。数据集选自加州理工学院200种鸟类数据集二、......
  • 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法
    一、介绍蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频+代码视频+完整代码:http......
  • 手写数字识别系统Python+CNN卷积神经网络算法【完整代码】
    一、介绍手写数字识别系统,使用Python语言,基于TensorFlow搭建CNN卷积神经网络算法对数据集进行训练,最后得到模型,并基于FLask搭建网页端界面,基于Pyqt5搭建桌面端可视化界面。二、效果展示三、演示视频+完整代码视频+代码:https://www.yuque.com/ziwu/yygu3z/tb1mzqi847daqkru......
  • 探索Python的反射与内省:代码的自我察觉
    Python中的反射与内省允许代码察觉和修改它自己。反射指的是程序在运行时可以访问、检测和修改它自己的结构或行为的一种能力。而内省则更侧重于查看对象的类型和属性,比如查看一个对象是否有某个属性或方法,以及查看对象的文档字符串等。本文将深入探讨Python的反射与内省能力。一......