python爬虫selenium和ddddocr使用

news2024/11/23 3:58:49

python爬虫selenium和ddddocr使用

selenium使用

selenium实际上是web自动化测试工具,能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。

通过python+selenium结合来实现爬虫十分巧妙。

由于是模拟人的点击来操作,所以实际上被反爬的概率将大大降低。
selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易。

1.安装

pip install selenium

image-20231029211133077

2.安装模拟驱动webdriver

以谷歌浏览器为例,首先查看浏览器的版本号

image-20231029211315136

下载对应版本号的安装包,下好后解压

版本号70-114:http://chromedriver.storage.googleapis.com/index.html

版本号118-120:https://googlechromelabs.github.io/chrome-for-testing/#stable

image-20231029220834294

3.代码编写

首先引入包

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

配置浏览器启动地址和webservice地址

options = webdriver.ChromeOptions()
options.binary_location = 'chrome.exe的地址
driver_location = "chromedriver.exe的地址

打开浏览器,并访问网站

browser = webdriver.Chrome(service=Service(driver_location), options=options)
browser.get('https://www.jd.com/')

完整代码

# @Author : 陈天在睡觉
# @Time : 2023/10/28 23:19
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

options = webdriver.ChromeOptions()
options.binary_location = 'C:\\chrome.exe'# 谷歌浏览器地址
driver_location = "E:\\chromedriver.exe"# 谷歌浏览器driver地址
browser = webdriver.Chrome(service=Service(driver_location), options=options)
browser.get('https://www.jd.com/') # 访问网站

image-20231029213632696

这个时候我们发现浏览器打开页面后就会关闭,我们只需要加上一行代码即可

options.add_experimental_option("detach",True)

完整代码

image-20231029213846828

4.获取元素

我们可以通过drowser的find_element找到对象

from selenium.webdriver.common.by import By
browser.find_element(By.ID,"title")#通过id来查找id为title的元素

老版本的selenium查找方法为

from selenium.webdriver.common.by import By
browser.find_element_by_id("title")

找到元素可以使用click()模拟点击,send_keys()模拟输入

from selenium.webdriver.common.by import By
username =  browser.find_element(By.ID,"username")
submit =  browser.find_element(By.ID,"submit")
username.send_keys("admin")
submit.click()

ddddocr使用

ddddocr(Deep Double-Digital Digits OCR)是一个基于深度学习的数字识别库,专门用于识别双重数字(双位数字)的任务。它是一个开源项目,提供了训练和预测的功能,可用于识别图片中的双位数字并输出其具体的数值。

  1. 深度学习:ddddocr利用深度学习技术,特别是卷积神经网络和循环神经网络,对双重数字进行准确的识别。
  2. 开源项目:ddddocr是一个开源项目,允许用户免费使用、修改和分发代码。这使得更多的开发者可以参与其中,贡献自己的想法和改进。
  3. 高准确率:通过深度学习的方法,ddddocr在双重数字识别任务上能够取得较高的准确率,有效克服了传统方法在此任务上的困难。
  4. 灵活性:ddddocr提供了训练和预测的功能,用户可以根据自己的需求自定义模型并进行训练,以适应不同的双重数字识别任务。

ddddocr的目标是提供一个简单而有效的工具,帮助开发者和研究者在双重数字识别任务上取得更好的结果。通过使用该库,用户可以轻松地集成双重数字识别功能到自己的应用程序或项目中,实现更准确和可靠的数字识别功能。

1.安装

需要注意的是python版本过高是安装不了的,我使用的是python3.9

pip install ddddocr

image-20231029215334646

2.修改配置

我们直接使用ddddocr会出现以下错误

image-20231029215818471

原因是在pillow的10.0.0版本中,ANTIALIAS方法被删除了,使用新的方法即可:

旧方法:Image.ANTIALIAS

新方法:Image.LANCZOS

解决办法:

方案一,修改ddddocr的_init_.py文件,将其中的ANTIALIAS替换为新方法:

image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert('L')

image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.LANCZOS).convert('L')

方案二,降级Pillow的版本,比如使用9.5.0版本

先卸载,再重新安装

pip uninstall -y Pillow

pip install Pillow==9.5.0

这里我采用的是方法一,直接点击红框框里的文件

image-20231029215818471

image-20231029215908977

3.编写代码

直接上代码

# @Author : 陈天在睡觉
# @Time : 2023/10/29 21:50
import ddddocr

ocr = ddddocr.DdddOcr()
with open('img.png', 'rb') as f:
	image = f.read()
res = ocr.classification(image)

print('识别出的验证码为:' + res)

测试的图片

image-20231029220130612

测试结果

image-20231029220144452

如果不想看到广告可以添加show_ad = False

# @Author : 陈天在睡觉
# @Time : 2023/10/29 21:50
import ddddocr

ocr = ddddocr.DdddOcr(show_ad = False)
with open('img.png', 'rb') as f:
	image = f.read()
res = ocr.classification(image)

print('识别出的验证码为:' + res)

image-20231029220254998

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1148186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium

大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战 以及1小时掌握Python操作Mysql数据库之pymysql模块技术 近日锋哥又卷了一波课程,python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium,文字版视频版。1…

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义,只需要满足:1、根节点两个子树的高度差不超过1;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…

基于SSM的n省出口基地公共信息服务平台设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

软考下午第一题 案列分析

期待分值 10,前三问12左右分,最后一题2、3分左右,重点在于拿下前面三题。 小心谨慎,不要大意。 数据流图 外部系统 数据存储 加工()process 数据流 第二小题 说明给出存储名称,就使用该名称&…

C# Socket通信从入门到精通(6)——单个同步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(5)——单个同步TCP服务器监听一个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

基于Qt 文本读写(QFile/QTextStream/QDataStream)实现

​ 在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本章介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。 ## QFile 读写文本 QFile 类提供了读…

[2021]不确定成本下的处理分配

英文题目:Treatment Allocation under Uncertain Costs 中文题目:不确定成本下的处理分配 单位:swager、uber 时间:2021 论文链接:https://arxiv.org/pdf/2103.11066.pdf 代码: 摘要: 我…

一个基于Excel模板快速生成Excel文档的小工具

介绍 DocumentGenerator是一个Excel快速生成工具,目标以后还能实现Word、pdf等的文件的生成。该程序独立运行,可通过HTTP接口调用其生成接口。 典型使用场景为如下: 使用者编写模板文件使用者准备模板文件的填充JSON数据内容使用者通过网络…

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据

一.串口轮询模式底层机制: 在STM32每个串口的内部都有两个寄存器:发送数据寄存器(TDR)/发送移位寄存器,当我们调用HAL_UART_Transmit 把数据发送出去时,CPU会将数据依次将数据发送到数据寄存器中,移位寄存器中的数据会根据我们设置…

leetcode做题笔记206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…

k8s replicaSet,deployment 学习笔记

文章目录 replicaSet 和 deployment 两者的关系。创建滚动更新回滚 replicaSet 和 deployment 两者的关系。 在 Kubernetes 中,ReplicaSet 和 Deployment 都是用来确保某种 Pod 的副本数目。但是,ReplicaSet 和 Deployment 是有差别的,二者的…

【送书福利-第二十二期】《Vue.js 3企业级项目开发实战(微课视频版)》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文…

电路器件认识与KV STUDIO的实践(二)

当当当当,下班了,下面来记录一下小编学习到的电气知识与plc的应用吧!!! 目录 电路元器件的认识 断路器(作用是过载保护、短路保护、地线故障保护和手动控制) 漏电断路器(当漏电电…

H5游戏源码分享-考眼力游戏猜猜金币在哪

H5游戏源码分享-考眼力游戏猜猜金币在哪 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><meta charset"UTF-8"><meta name"apple-mobile-web-app-capa…

vue3后台管理系统之跨域代理

vite.config.js中 server: {port: 5002,host: true, //0.0.0.0open: false,strictPort: true,proxy: {// 请求前缀/api&#xff0c;只有加了/api前缀的请求才会走代理(前端自定义)/api: {target: http://127.0.0.1:8000,// 获取服务器地址的设置changeOrigin: true,// 路径重写…

LeetCode热题100 240.搜索二维矩阵||

题目描述&#xff1a; 编写一个高效的算法来搜索 m*n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,2…

java项目之时间管理系统(ssm框架)

项目简介 时间管理系统实现了以下功能&#xff1a; 管理员&#xff1a;个人中心、用户管理、分类列表管理、在线学习管理、励志视频管理、活动项目管理、活动报名管理、目标制定管理、论坛管理、系统管理。用户&#xff1a;注册、个人中心、活动报名管理、目标制定管理、我的…

SonarLint安装与简介

简介&#xff1a; SonarLint 是SonarQube官方推出的可以在idea 静态扫描插件&#xff0c;可以同步sonarqube的规则&#xff0c;在开发编译的时候发现问题&#xff0c;可以有效减少在流水线扫描返工的次数 安装 idea 选择setttings &#xff0c;搜索sonarlint插件&#xff0c…

“第五十四天” 溢出判断,标志位 ,有问题

之前说过在运算的时候可能发生溢出&#xff0c;这种情况只会出现在 正正相加 &#xff0c;负负相加 的时候才会出现前者是上溢&#xff0c;正正加得负&#xff0c;后者是下溢&#xff0c;负负加得正。&#xff08;减法变成加法&#xff0c;再看&#xff09; 加减运算&溢出…

【Luckfox pico入门记录(二)】ubuntu22.04系统烧录

写在前面 最近在看智能手表的选型&#xff0c;但是作为一个小白的我&#xff0c;发现要么核心板太大了&#xff0c;不适合作为手表(大多数核心板的面积都在4*4以上&#xff0c;而且很少带有WIFI芯片&#xff0c;即使带有WIFI芯片也不是PCB天线而是那种立着的天线。而Luckfox因为…