- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别
在我们写爬虫的过程中,目标网站常见的干扰手段就是设置验证码等,本就将基于Selenium实战讲解如何处理弹窗和验证码,爬取的目标网站为某仪器预定平台
可以看到登录所需的验证码构成比较简约,是彩色的标准数字协作简约的背景干扰
因而这里的验证码识别不需要借助人工智能的手段,可直接利用二值法对图片处理后交给谷歌的识别引擎tesseract-OCR即可获得图中的数字。
注:selenium?和?tesseract?的配置读者可自行搜索,本文不做引见)
Python实战
首先导入所需模块
import?re#?图片处理from?PIL?import?Image#?文字识别import?pytesseract#?扫瞄器自动化from?selenium?import?webdriverimport?time
处理弹出框问题
先尝试打开示例网站
url?=?/clientdriver?=?webdriver.Chrome()driver.get(url)time.sleep(30)
好玩的地方消灭了,网站显示了一个我们前面没有看到的弹窗,简约说一下弹窗的学问点,初学者可以将弹出框简约分为alert和非alert
alert式弹出框
alert(message)方法用于显示带有一条指定消息和一个 OK 按钮的警告框
confirm(message)方法用于显示一个带有指定消息和 OK 及取消按钮的对话框
prompt(text,defaultText)方法用于显示可提示用户进行输入的对话框
看一下这个弹出框的js是怎样写的:
看起来好像是alert式弹出框,那么直接用driver.switch_to.alert吗?先不急
非传统alert式弹出框的处理
弹出框位于div层,跟平常定位方法一样
弹出框是嵌套的iframe层,需要切换iframe
弹出框位于嵌套的handle,需要切换窗口
所以我们对这个弹出框进行元素审查
所以问题实际上很简约,直接定位按钮并点击即可
url?=?/clientdriver?=?webdriver.Chrome()driver.get(url)time.sleep(1)driver.maximize_window()?#?最大化窗口driver.find_element_by_xpath(//div[@class=jconfirm-buttons]/button).click()
猎取图片位置并截图
二值法处理验证码的简约思路如下:
切割截取验证码所在的图片
转为灰度后二值法将有效信息转为黑,背景和干扰转为白色
处理后的图片交给文字识别引擎
输入前往的结果并提交
切割截取验证码的图片进一步思考处理策略:首先猎取网页上图片的css属性,依据size和location算出图片的坐标;然后截屏;最终用这个坐标进一步去处理截屏即可(由于验证码js的特殊性,不能简约猎取img的href后下载图片后读取识别,会导致前后不婚配)
img?=?driver.find_element_by_xpath(//img[@id=valiCode])time.sleep(1)location?=?img.locationsize?=?img.size#?left?=?location[x]#?top?=?location[y]#?right?=?left?+?size[width]#?bottom?=?top?+?size[height]left?=?2?*?location[x]top?=?2?*?location[y]right?=?left?+?2?*?size[width]?-?10bottom?=?top?+?2?*?size[height]?-?10driver.save_screenshot(valicode.png)page_snap_obj?=?Image.open(valicode.png)image_obj?=?page_snap_obj.crop((left,?top,?right,?bottom))image_obj.show()
正常情况下直接使用注释的四行代码即可,但不同的电脑不同的扫瞄器,缩放倍率存在差异,因而假如截取出的图存在偏差这需要考虑乘上倍率系数。最终可以再加减数值进行微调
可以看到图片这成功截取出来了!
验证码图片的进一步处理
这个阈值需要具体用Photoshop或者其他工具尝试,即找到一个像素阈值能够将灰度图片中真实数据和背景干扰分开,本例经测试阈值为205
img?=?image_obj.convert(L)??#?转灰度图pixdata?=?img.load()
您可能关注的文档
最近下载
- 江苏省苏州市2023-2024学年七年级上学期期中考试语文试卷(解析版).docx VIP
- 新人教版同在一片蓝天下课件.ppt VIP
- ONKYO安桥功放TX-NR696产品手册.pdf
- 公路长大桥梁结构健康监测 系统介绍.pdf VIP
- 农作物病虫害监测技术规范.docx VIP
- 一类农作物病虫害监测调查方法.docx VIP
- 2025-2026学年小学信息科技泰山版2024六年级下册-泰山版2024教学设计合集.docx
- 汽车底盘构造与维修 项目四 汽车行驶系的检修.ppt VIP
- 四级手术术前多学科讨论制度.docx VIP
- 提高四级手术术前多学科讨论完成率PDCA案例.pptx VIP
原创力文档


文档评论(0)