python爬虫selenium和ddddocr使用

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 Serviceoptions = 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 Pillowpip install Pillow==9.5.0

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

image-20231029215818471

image-20231029215908977

3.编写代码

直接上代码

# @Author : 陈天在睡觉
# @Time : 2023/10/29 21:50
import ddddocrocr = 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 ddddocrocr = 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.rhkb.cn/news/173655.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM调优(10)JVM的运行时数据区

一、概述 对于 C C 来说,在内存管理领域,JVM既拥有最高的权利,但是同时他们又是从事最基础工作的劳动人员,因为他们担负着每一个对象从开始到结束的维护责任。而对于Java来说,再虚拟机自动内存管理的帮助下&#xff0…

windows 设置nginx、redis、jar包开机自启、mysql自动备份

1、--------------设置nginx------------------- cd到nginx 根目录与nginx.exe平齐 1.1下载WinSW.NET4.exe 放入nginx.exe平齐目录命名为nginx-servier.exe 链接: https://pan.baidu.com/s/1obKTinD1Z9BKgMJxZMtk2Q?pwdg47u 提取码: g47u 复制这段内容后打开百度网盘手机App…

玩转ChatGPT:批量下载Alphafold的蛋白pdb文件

一、写在前面 突发奇想,想批量下载Alphafold网站的蛋白pdb文件,后续再做个分子对接用。又不想手动下载,来求助CSDN和GPT。 二、CSDN白嫖基础代码 CSDN大神多,这不,找到一个:Alphafold批量下载蛋白的pdb文…

2318.不同骰子序列的数目

经典的DP题目,求方案数 从序列中最后一个数字往前考虑 当前状态取决于前一个的状态和再前一个的状态所以dp(n,last,last1)为当前考虑的是第n个并且前一个数字是last 再前一个数字是last1的所有方案数,递归的…

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

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

Web入门笔记

Web入门笔记 HTTP协议 超文本传输协议 规定了浏览器和服务器之间数据传输的规则,请问数据和响应数据的格式 基于TCP请求-响应模式一次请求对应一次响应无状态的协议 请问数据格式 浏览器版本:解决浏览器兼容问题。GET请求体:存放请求参数…

汇编运算符和表达式

运算符: 汇编语言由表达式和运算符组成,运算符分为数值运算符和属性运算符。属性运算符面向变量或标号。 数值运算符: 算术运算符: 运算符类型 ✓ ( 正号 ) 、 -( 负号 ) ✓ ( 加 ) 、 -( 减 ) 、 *( 乘 ) 、 /( 除 ) 、 MO…

如何配置微信小程序id

使用uni-app开发微信小程序项目,配置好微信小程序id是必不可少的。 一、如何找微信小程序id 二、如何配置微信小程序id

二叉树的概念

文章目录 二叉树一、树的概念1.树形结构1.1. 树的特点:1.2 概念:1.3 树的表示形式 2.树的应用 二、二叉树1.二叉数的概念2.满二叉树3.完全二叉树4.二叉树的性质练习: 二叉树 一、树的概念 1.树形结构 1.1. 树的特点: 1.根节点没…

二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard

二进制搭建 Kubernetes v1.20 k8s集群master01:20.0.0.50 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:20.0.0.100k8s集群node01:20.0.0.110 kubelet kube-proxy docker etcd k8s集群node02:20.…

学习paddle-detection(paddlex的使用)

首先下载paddlex(网页)的本地软件,下载链接如下: paddlex 下载完成后进行安装 打开后选择开发者模式,开发者模式主要是和VScode进行集成 本章节主要介绍在开发者模式下可以查看和编辑的文件及其作用,关于…

【Java 进阶篇】解决Java Web应用中请求参数中文乱码问题

在Java Web应用开发中,处理请求参数时经常会遇到中文乱码的问题。当浏览器向服务器发送包含中文字符的请求参数时,如果不正确处理,可能会导致乱码问题,使得参数无法正确解析和显示。本文将详细探讨Java Web应用中请求参数中文乱码…

nginx请求时找路径问题

nginx请求时找路径问题 你是否遇到过这样的情况: 当你安装了nginx的时候,为nginx配置了如下的location,想要去访问路径下面的内容,可是总是出现404,找不到文件,这是什么原因呢,今天我们就来解…

针对element-plus,跳转jump(快速翻页)

待补充 const goToPage () > {const inputElement document.querySelector(.el-pagination .el-input__inner);console.log(inputElement, inputElement); } 打印之后可以看到分页跳转的数字输入框,是有进行处理的,max"102",是我自己的…

什么是 Node.js

目标 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端的应用…

智能矩阵,引领商业新纪元!拓世方案:打破线上线下界限,开启无限营销可能!

在科技赋能商业大潮中,一切行业都在经历巨大变革,传统的营销策略被彻底改变,催生着无数企业去打造横跨线上线下、多维度、全方位的矩阵营销帝国。无数的成功案例已经告诉我们,营销不再只是宣传,而是建立品牌与消费者之…

基于物联网云平台的分布式光伏监控系统的设计与实现

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:针对国内光伏发电监控系统的研究现状,文中提出了基于云平台的光伏发电监控体系。构建基于B/S架构的数据实时采集与推送,以SSH(strutsspringhibernate)作为Web开发框架,开发基…

TSINGSEE青犀基于AI视频识别技术的平安校园安防视频监控方案

一、背景需求 因学校频频出治安事件,所以必须要加强学校的安防工作,目前来看,大部分校园都建设了视频监控来预防保障校园安全。但是传统的视频监控系统,主要通过设备来录像以及人员时时监控来进行。这种监管方式效率十分低下&…

STM32F103的中断

文章目录 STM32F103的NVICSTM32F103 的中断优先级分组 STM32F103的NVIC CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。 CM3中每个中断通道都具备自己的8位中断优先级控制字节, 但ST…

SOLIDWORKS PDM 2024数据管理5大新功能

1. 改进的视觉内容 • 通过装配体可视化功能,在 SOLIDWORKS 中以图形方式查看零部件数据,如工作流程状态。• 使用特定图标迅速识别焊件切割清单零部件。 优点:重要数据和系统信息一目了然。 2.增强的数据保护和跟踪功能 •保护“包含”和…