盘点一个Python网络爬虫过验证码的问题(方法一)_天天微速讯
回复“书籍”即可获赠Python从入门到进阶共10本电子书
(资料图片仅供参考)
今
日
鸡
汤
低眉信手续续弹,说尽心中无限事。大家好,我是皮皮。
一、前言前几天在Python最强王者群【鶏啊鶏。】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。
下面是他的代码:
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport timefrom PIL import Imageimport 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.locationsize = captcha_element.sizeprint(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)
基本思路是没啥问题的,确实也是可以拿到对应界面的截图,只不过是验证码的位置截取出现了点偏差,导致验证码没正确识别到。
下面这个代码是获取验证码图片元素的位置和大小:
location = captcha_element.locationsize = captcha_element.size
这个部分我看介绍应该是会返回定位的元素位置,我刚刚大致拖拉了一下在裁剪前的定位打印出来确实就已经去了输入密码附近的位置了 但是我定位的元素是验证码的地方,并且我也尝试了先定位验证那个位置的大元素再定位至具体的验证码图片位置 问题依旧。
上面是粉丝的疑惑,下面一起来看看解决办法。
二、实现过程这里【魏哥】尝试了下代码,但是出现下图报错:
这个报错还是蛮常见的,对于时常使用sel的人来说,这个报错算是家常便饭了,报错的原因是本地浏览器驱动和谷歌浏览器的版本不匹配,需要更换本地浏览器驱动。
关于这个问题的解决方法,就是去网页下载对应浏览器版本的对应驱动,放到本地指定文件夹,确保该文件夹路径有加入环境变量。该问题的解决办法公众号历史文章也有提及,网上的解决教程也一大堆,这里不再赘述。
言归正传,继续回到这个问题的解决办法。这里【甯同学】给了一个思路,直接找到 验证码的图片的url 用requests 请求 验证码的.content 用 ocr.classification(验证码的.content) 就可以了 不用保存图片 在open读取二进制流,代码如下所示:
顺利地解决了粉丝的问题,如果对requests和Beautiful还不熟悉的小伙伴,可能接受起来就比较困难一些。
这里只是给出了其中一个方法,另外的一个方法,一起看下一篇文章,敬请期待!
三、总结大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫过验证码的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【鶏啊鶏】提问,感谢【甯同学】、【魏哥】给出的思路和代码解析,感谢【Ineverleft】等人参与学习交流。
【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。
大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
------------------- End -------------------
往期精彩文章推荐:
if a and b and c and d:这种代码有优雅的写法吗?
Pycharm和Python到底啥关系?
都说chatGPT编程怎么怎么厉害,今天试了一下,有个静态网页,chatGPT居然没搞定?
站不住就准备加仓,这个pandas语句该咋写?
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
关键词:
相关阅读
-
盘点一个Python网络爬虫过验证码的问题...
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠P... -
视讯!新课标标准化作业_关于新课标标准...
1、《新课标标准化作业》是克孜勒苏柯尔克孜文出版社;新疆青少年出版 -
走出世界!掘金拉美2023拉美跨境电商产...
6月20日下午,掘金拉美2023拉美跨境电商产业带高峰论坛于佛山顺德东平 -
2023年重庆市“全民健身助力乡村振兴”...
21日,2023年重庆市“全民健身助力乡村振兴”系列活动在酉阳宜居乡... -
删除线word怎么加_删除线|每日播报
1、★word第一步:把你要画删除线的字“反白”(把滑鼠移到第一个字前... -
外交部美大司司长介绍中美五项共识_每日...
6月19日晚,外交部美大司司长杨涛就美国国务卿布林肯访华向中外媒体吹 -
河南天壕新能拟北交所IPO 募资3亿元
【大河财立方消息】6月21日,天壕新能源股份有限公司(以下简称“天壕 -
【全球新要闻】袁枚所见朗诵_袁枚所见的...
想必现在有很多小伙伴对于袁枚《所见》的意思方面的知识都比较想要了解 -
蔬菜的营养价值有哪些_银耳的营养价值 ...
1、银耳又名银耳、银耳,是银耳属的一种食用菌。新鲜时呈白色半透明状 -
618复盘|今年物流忙不忙 看京东快递小...
今年618大促已经落下帷幕,但很多快递还在路上,物流工作仍在继续。各 -
【世界热闻】重拾古籍中家国精神 端午...
央视网消息:古籍中记录的中华文脉源远流长,典籍诗词中投射的家国精神 -
释放经济新活力 假期民俗文化热潮带动...
央视网消息:佳节至,节日氛围渐浓,居民出行度假意愿上升,民俗文化热 -
海东市检察机关举办数字检察法律监督模...
6月20日,海东市检察院举办全市检察机关首届数字检察法律监督模型竞赛 -
世界即时:【最美基层干部】大湾镇大箐...
为持续推进巩固拓展脱贫攻坚成果同乡村振兴有效衔接,一批又一批驻村干 -
全球速读:骆传朋任广东南粤银行董事长
广东南粤银行官网6月21日发布公告,广东南粤银行股份有限公司董事会已 -
漯河市召陵区法院举办“政法工作大讲堂...
大河网讯6月21日上午,漯河市召陵区人民法院举办“政法工作大讲堂”... -
南昌西湖警方集中退赃!247万涉案财物返...
来源|都市现场原创未经允许请勿转载今天上午,南昌市公安西湖分局举行 -
世界信息:广州储能产业“放大招”:“国...
南方财经全媒体记者梁施婷广州报道近日,广州突然“放大招”,要成... -
环球今日讯!海东互助:万亩“供港澳”...
青海日报融媒体6月21日讯(记者陈俊通讯员牟泉)海东市互助土族自治县 -
iphone的备忘录怎么导出到电脑_iphone备...
1、iphone备忘录怎么导出到电脑。本文到此分享完毕,希望对大家有所帮助。