当前位置: 首页 > news >正文

阿里云网站建设的实训报告遵义在线理财俱乐部

阿里云网站建设的实训报告,遵义在线理财俱乐部,免费wordpress外贸企业主题,怎么增加网站的流量点击上方“早起Python”#xff0c;关注并“星标”每日接收Python干货#xff01;本文含 3321 字#xff0c;9代码片段建议阅读 8 分钟前言 在我们写爬虫的过程中#xff0c;目标网站常见的干扰手段就是设置验证码等#xff0c;本就将基于Selenium实战讲解如何处理弹窗和验… 点击上方“早起Python”关注并“星标”每日接收Python干货本文含 3321 字9代码片段建议阅读 8 分钟前言 在我们写爬虫的过程中目标网站常见的干扰手段就是设置验证码等本就将基于Selenium实战讲解如何处理弹窗和验证码爬取的目标网站为某仪器预约平台可以看到登录所需的验证码构成比较简单是彩色的标准数字配合简单的背景干扰因此这里的验证码识别不需要借助人工智能的手段可直接利用二值法对图片处理后交给谷歌的识别引擎tesseract-OCR即可获得图中的数字。注selenium 和 tesseract 的配置读者可自行搜索本文不做介绍)Python实战 首先导入所需模块import re# 图片处理from PIL import Image# 文字识别import pytesseract# 浏览器自动化from selenium import webdriverimport time解决弹出框问题先尝试打开示例网站url  http://lims.gzzoc.com/clientdriver  webdriver.Chrome()driver.get(url)time.sleep(30)有趣的地方出现了网站显示了一个我们前面没有看到的弹窗简单说一下弹窗的知识点初学者可以将弹出框简单分为alert和非alertalert式弹出框alert(message)方法用于显示带有一条指定消息和一个 OK 按钮的警告框confirm(message)方法用于显示一个带有指定消息和 OK 及取消按钮的对话框prompt(text,defaultText)方法用于显示可提示用户进行输入的对话框看一下这个弹出框的js是怎么写的看起来似乎是alert式弹出框那么直接用driver.switch_to.alert吗先不急非传统alert式弹出框的处理弹出框位于div层跟平常定位方法一样弹出框是嵌套的iframe层需要切换iframe弹出框位于嵌套的handle需要切换窗口所以我们对这个弹出框进行元素审查所以问题实际上很简单直接定位按钮并点击即可url  http://lims.gzzoc.com/clientdriver  webdriver.Chrome()driver.get(url)time.sleep(1)driver.maximize_window() # 最大化窗口driver.find_element_by_xpath(//div[classjconfirm-buttons]/button).click()获取图片位置并截图二值法处理验证码的简单思路如下切割截取验证码所在的图片转为灰度后二值法将有效信息转为黑背景和干扰转为白色处理后的图片交给文字识别引擎输入返回的结果并提交切割截取验证码的图片进一步思考解决策略首先获取网页上图片的css属性根据size和location算出图片的坐标然后截屏最后用这个坐标进一步去处理截屏即可(由于验证码js的特殊性不能简单获取img的href后下载图片后读取识别会导致前后不匹配)img  driver.find_element_by_xpath(//img[idvaliCode])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或者其他工具尝试即找到一个像素阈值能够将灰度图片中真实数据和背景干扰分开本例经测试阈值为205img  image_obj.convert(L)  # 转灰度图pixdata  img.load()w, h  img.sizethreshold  205# 遍历所有像素大于阈值的为黑色for y in range(h):    for x in range(w):        if pixdata[x, y]             pixdata[x, y]  0        else:            pixdata[x, y]  255根据像素二值结果重新生成图片data  img.getdata()w, h  img.sizeblack_point  0for x in range(1, w - 1):    for y in range(1, h - 1):        mid_pixel  data[w * y  x]        if mid_pixel 50:            top_pixel  data[w * (y - 1)  x]            left_pixel  data[w * y  (x - 1)]            down_pixel  data[w * (y  1)  x]            right_pixel  data[w * y  (x  1)]            if top_pixel 10:                black_point  1            if left_pixel 10:                black_point  1            if down_pixel 10:                black_point  1            if right_pixel 10:                black_point  1            if black_point 1:                img.putpixel((x, y), 255)            black_point  0img.show()图像处理前后对比如下文字识别将处理后的图片就给谷歌的文字识别引擎就能完成识别result  pytesseract.image_to_string(img)# 可能存在异常符号用正则提取其中的数字regex  \dresult  .join(re.findall(regex, result))print(result)识别结果如下提交账号密码、验证码等信息在处理完验证码之后现在我们就可以向网站提交账号密码、验证码等登陆所需信息driver.find_element_by_name(code).send_keys(result)driver.find_element_by_name(userName).send_keys(xxx)driver.find_element_by_name(password).send_keys(xxx)# 最后点击确定driver.find_element_by_xpath(//div[classform-group login-input][3]).click()需要注意的是二值法识别验证码成功率不是100%因此需要考虑到验证码识别错误需要单击图片更换验证码重新识别可以将上述代码拆解成多个函数后用如下循环框架试错while True:    try:        ...        break    except:        driver.find_element_by_id(valiCode).click()为了方便理解代码的书写没有以函数形式呈现欢迎读者自行尝试修改小结成功登录后就可以获得个人的cookies接下来可以继续用selenium进行浏览器自动化或者把cookies传给requests后面就能爬取需要的信息做分析或者实现一些自动化功能但由于涉及到的爬虫知识点比较多我们会在后续的爬虫专题文章中进行分享往期精选(?猛戳可查看)10行Python代码竟能实现这些骚操作Python随机森林预测实战今日干货已送达又学到一招点击下方三连签收?收到收到
http://www.pierceye.com/news/405610/

相关文章:

  • 改成 响应式 网站重庆微信企业网站
  • 用微信怎么做商城网站微信官网下载安装
  • 汽车网站建设方案预算md风格的wordpress主题
  • 免费外贸网站模板dede 网站栏目管理
  • 做网站有包括哪些东西站长素材网
  • 淘宝做促销的网站网站开发报价清单
  • 备案查询网站网站建设中可能遇到的问题
  • 怎么注册网站的步骤快速建站官网
  • 网站怎么做口碑wordpress淘宝客知乎
  • 响应式网站建设信息网站建设宽带
  • ps如何做网站超级链接微信公众平台运营中心电话
  • 网站建设怎么估算费用和报价h5特效网站欣赏
  • 东软集团建设网站娱乐网站排行榜
  • 石家庄网站建站米拓建站官网怎么用不了
  • 推广seo网站的公司金华网站建设公司排名
  • 阿里巴巴网站工作流程网站建设 教学设计
  • 电子商务网站建设的方法怎样用织梦做音乐网站
  • 临夏州住房和城乡建设局网站出词
  • 企业网站的综合要求最新领导班子7人名单
  • 通过阿里云建设企业网站联想企业网站建设的思路
  • 网站建设服务器的选择方案建设报名系统是正规网站吗
  • 揭阳高端模板建站WordPress背景音乐6
  • 如何使用云服务建设网站cpa之家 app推广平台
  • 网站设计策划书案例漳浦建设局网站
  • ps做分享类网站效果图设计公司工作室创业规划
  • 个人虚拟机做网站设计实例网站
  • 衡阳企业网站wordpress置顶文章顺序
  • 网站建设宗旨是指郑州有名的做网页的公司
  • 怎么0成本做网站企业网站如何设计网页
  • 做韦恩图网站课程分销平台