盘点一个Python网络爬虫过验证码的问题(方法一)

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

低眉信手续续弹,说尽心中无限事。

大家好,我是皮皮。

一、前言

前几天在Python最强王者群【鶏啊鶏。】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。

1123ab7e35d78e7d4e518c164b6d18ef.png

下面是他的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from PIL import Image
import ddddocrocr = ddddocr.DdddOcr()options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)# 打开目标网页
driver.get('https://sol.sinosure.com.cn')
time.sleep(5)
driver.maximize_window()
# 定位验证码图片元素并模拟鼠标悬停以加载图片
yanzhengma = driver.find_element(By.CSS_SELECTOR, '.pass-form-item.pass-form-item-code')
captcha_element = yanzhengma.find_element(By.CSS_SELECTOR,  '.pass-label-img')
webdriver.ActionChains(driver).move_to_element(captcha_element).perform()
time.sleep(5)# 获取验证码图片元素的位置和大小
location = captcha_element.location
size = captcha_element.size
print(location)
print(size)
# 截取整个网页的截图
driver.save_screenshot('screenshot.png')# 根据验证码图片元素的位置和大小,从整个网页截图中裁剪出验证码图片
left = int(location['x'])
top = int(location['y'])
right = int(location['x'] + size['width'])
bottom = int(location['y'] + size['height'])
captcha_screenshot = Image.open('screenshot.png').crop((left, top, right, bottom))
print(left)
print(top)
print(location)
print(bottom)
# 保存裁剪后的验证码图片,并进行识别
captcha_screenshot.save('captcha.png')
with open('captcha.png', 'rb') as f:img_bytes = f.read()
res = ocr.classification(img_bytes)
print('识别的验证码是:' + res)

基本思路是没啥问题的,确实也是可以拿到对应界面的截图,只不过是验证码的位置截取出现了点偏差,导致验证码没正确识别到。

ad61e4c193257d07ca8f04df50c8be90.png

下面这个代码是获取验证码图片元素的位置和大小:

location = captcha_element.location
size = captcha_element.size

这个部分我看介绍应该是会返回定位的元素位置,我刚刚大致拖拉了一下在裁剪前的定位打印出来确实就已经去了输入密码附近的位置了 但是我定位的元素是验证码的地方,并且我也尝试了先定位验证那个位置的大元素再定位至具体的验证码图片位置  问题依旧。

上面是粉丝的疑惑,下面一起来看看解决办法。

二、实现过程

这里【魏哥】尝试了下代码,但是出现下图报错:

3869a636a741b81b011053f5f551be7c.png

这个报错还是蛮常见的,对于时常使用sel的人来说,这个报错算是家常便饭了,报错的原因是本地浏览器驱动和谷歌浏览器的版本不匹配,需要更换本地浏览器驱动。

关于这个问题的解决方法,就是去网页下载对应浏览器版本的对应驱动,放到本地指定文件夹,确保该文件夹路径有加入环境变量。该问题的解决办法公众号历史文章也有提及,网上的解决教程也一大堆,这里不再赘述。

87e2419f284b52e4f8078d7e81da78ea.png

言归正传,继续回到这个问题的解决办法。这里【甯同学】给了一个思路,直接找到 验证码的图片的url 用requests 请求 验证码的.content 用 ocr.classification(验证码的.content) 就可以了 不用保存图片 在open读取二进制流,代码如下所示:

7b2241a315fcceb7460095efdd8149e1.png

顺利地解决了粉丝的问题,如果对requests和Beautiful还不熟悉的小伙伴,可能接受起来就比较困难一些。

这里只是给出了其中一个方法,另外的一个方法,一起看下一篇文章,敬请期待!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫过验证码的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【鶏啊鶏】提问,感谢【甯同学】、【魏哥】给出的思路和代码解析,感谢【Ineverleft】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

26ea3e0ded5bd234d361919099d97dda.png

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

7a65f7efd22b3e51d2ef16b8fef4fc6e.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

c8fc4472448ceecad5ce164f582daa6f.jpeg

------------------- End -------------------

往期精彩文章推荐:

  • if a and b and c and d:这种代码有优雅的写法吗?

  • Pycharm和Python到底啥关系?

  • 都说chatGPT编程怎么怎么厉害,今天试了一下,有个静态网页,chatGPT居然没搞定?

  • 站不住就准备加仓,这个pandas语句该咋写?

b3b302cf94b499ad4130de9d9a649c3e.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

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

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

相关文章

小红书怎么推广笔记?小红书推广笔记有什么用?

小红书平台问世以来,得到快速发展,目前已经是电商领域的后起之秀,也是重要的口碑平台,在女性及生活用品方面的影响力不次于微信和微博,可以说是和抖音齐名的新秀平台。大家都知达到小红书平台的重要重要性,…

小红书笔记下沉的方法和技巧

小红书目前用户越来越多,随之而来发布的笔记数量也大了起来,不可避免得出现很多恶意的负面笔记,让大家很头疼。 下面推神网(daizuobaike)就给大家详细介绍下几种小红书负面笔记处理的方式: 1.官方入口,达到…

3.13 小红书笔记怎样带话题,才能增加曝光?【玩赚小红书】

虽然很多博主都知道在笔记内容最后要带上一个相关话题,但却很少人知道带什么样的话题,如何找到官方话题或热门话题来提高笔记内容的曝光。这一篇文章黄宇风就来讲讲,小红书笔记该如何带话题。 ​ ​ 1、挖掘小红书笔记热门话题 笔记带话题主…

小红书笔记没人看是什么原因?账号正常吗

相信很多人都遇到过自己认为笔记质量不错,但仍然会出现发布的小红书笔记没人看的情况。我们将为大家分析可能是哪些原因造成了这方面的困境,并告诉大家应该如何解决这些问题。 一.小红书笔记没人看的原因 1.账号违规 如果账号本身昵称、个性…

小红书怎样找回原账号_小红书笔记数据好不好,关键词搜索占一半

用户获取、浏览小红书笔记的渠道大致可以分为四个,一个是关注的博主账号,首页会有他们的笔记内容推荐;一个是主页上的发现页面,会推荐平常该用户感兴趣的内容以及附近地点的笔记;另外还有的则是小红书系统推荐。但更多小红书用户平常看笔记、…

小红书笔记打开显示连接不到服务器,小红书笔记看不到全文怎么回事啊?怎么发布小红书笔记?...

我们可以通过小红书购物笔记了解一些商品哦,因为小红书购物笔记里面的内容基本都是一些买家的购物体验,对于要买东西的我们来说,可以提供一些建议。可是最近有网友咨询小红书笔记看不到全文,小红书购物笔记找不到怎么回事?怎么发…

与领导吃饭需要注意什么

虽然说招待客人需要一定的技巧,但不是所有的聚餐,对方都会答应宴请;尤其是下属请领导吃饭时,不仅需要各种礼仪,还需要一定的技巧;当领导遇到下属,要请客吃饭时,都认为下属是有目的的…

新来的领导把我的职务免掉了,一年后,我要不要找领导聊聊?

你这一年都不找领导聊,现在人家另外两个都官复原职了,你才想起来聊聊,晚了。 从你的叙述中可以看出,你是一个非常正直的人,要不然被免职后也不会这么干等着。但正是你的正直,才导致了复职的是另外两个 &am…

领导找你谈话要注意这些

我的朋友小单每天努力工作,得到领导的重视;有一次小单正在认真工作,领导突然把小单叫到办公室谈话。小单一开始还有些紧张,没想到领导正好找她谈心,小单明白了领导的目的后就开口说话了。领导表面上只是问,…

如何看待程序员休息时间不工作被领导威胁辞退的?

在现在的互联网行业,程序员在职场工作肯定是十分辛苦的,基本很多公司都是996制度,这也和互联网行业工作环境有关系。因此程序员基本就只有周末一天假,所以难得休息一下。就有一名程序员因为在休息时间不工作被领导威胁辞退&#x…

程序员被领导辞退,1周后接到领导电话,听完后网友:把他拉黑

员工离职后,跟原来的单位就不再是雇佣关系,如果原单位有事情需要员工帮着解决,员工该不该收取报酬呢,但有的老板却认为,员工当时在公司留下的后遗症,他帮着公司解决,理所当然。 最近有一位程序员…

程序员和领导聚餐晒图,网友回复亮了:发量上就知道谁是新来的

目前大家都知道现在互联网行业的高薪,另外随着互联网行业们,门槛的降低,有很多人都想要加入到和联网行业当中来,而薪资高待遇好也是程序员让人羡慕的一方面,虽然一方面吐槽你互联网行业的辛苦加班,没有个人…

没有五十瓶红牛我是不会告诉你——面试中应该如何正确谈薪

文章末尾给大家留下了大量福利 前言 金九银十已经来临,很多小伙伴已经开始投身跳槽的准备中了。大家选择跳槽无非是想增加自己的工资收入,所以面试过程中的谈薪环节就显得尤为重要,谈的好与不好,未来整个的薪资水平都可能受影响…

为什么明明你做了很多事,到头来领导还是给你打了差评?

阅读本文大概需要 5.33 分钟。 这个问题源于一个队友的疑惑,原问题是 我在国企工作,平时工作之外,多做了很多事情,由于领导不懂技术,年底了,把我当作一般科室人员处理了,感觉看不到未来&#xf…

某程序员发现老板娘偷看同事微信火速离职!网友:这。。。

近日,湖南长沙李先生工作时意外发现老板娘偷看同事的微信,在告知同事后,小李觉得老板娘没素质最终选择离职。 视频显示,一女子正坐在电脑前翻阅微信聊天记录。根据小李和其同事对话的得知,那台电脑上登录的是小李同事的…

马斯克39页火星计划,也许是人类史上最伟大的PPT

“硅谷钢铁侠”马斯克一直梦想着火星移民。作为现在SpaceX公司首席运营官,他提出了核心答案,在火星上建造一座完整的城市。人类正成为多行星物种。 “你想在早晨醒来,并认为未来将会很好 - 这就是航天文明的全部内容。这是关于相信未来&#…

GPT-4要来了?传言:先进到与人类无异

编 | Cris源 | 新智元 千呼万唤始出来!GPT-4,真要来了? 作为史上最受期待的AI模型,GPT-4真要来了? 这几天,AI分析师罗梅罗的一篇专栏文章,一经推出便迅速「引爆」了整个AI科技圈。 他表示&#…

在人类的辅助下,ChatGPT完成了星际争霸小游戏程序的编写

算法使用的是Transformer,人类依然需要判断一些语法错误。但ChatGPT已经能完成90%的编程工作。

如果人工智能最终将毁灭人类,挽救人类你能做什么?

2017年,“人工智能”被写入政府工作报告,随之而来,AI所能替代的职位越来越多。我们开始担心,会不会在将来的某一天,自己所从事的职业被AI取代了呢? 智能革命时代先行者李开复在《人工智能》这本书里说&…

GPT-4革命:对话即编程,人人都是程序员?

昨晚OpenAI发布了ChatGPT插件机制,这让ChatGPT成为一个超级入口和超级计算机,能够调用其他服务。尽管大众对ChatGPT的理解是见多识广、能说会道、善解人意还很会道歉,但如果大模型的能力仅限于这个水平,那它也只能帮忙写写东西&am…