获取12306之类的验证码图片
时间:2019-12-03
本文章向大家介绍获取12306之类的验证码图片,主要包括获取12306之类的验证码图片使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
就目前来看12306的图片的URL是变动的,也就是说你拿到URL后打开这个URL可以发现这个图片他不是变动的,这个图片有种简单的方法保存就是直接请求页面xpath解析出URL,将页面图片存储到指定地址即可。
还有一种截图,这种稍微好一些,因为有些网站的验证码的URL是不变的,返回的图片信息在发生变化,而且会携带set-cookie
由于我的电脑浏览器的显示的问题,实际显示出的图片会比实际尺寸要大,所以在裁剪的时候我需要手动的调整位置跟图片大小才能获得图片验证码的正确图片
from selenium import webdriver from PIL import Image #用作于图片的裁剪 from time import sleep bro = webdriver.Chrome(executable_path=r'E:\chromedriver_win32\chromedriver.exe') bro.set_window_size(1400,700) bro.get('https://kyfw.12306.cn/otn/login/init') sleep(3) #验证码图片进行捕获(裁剪) bro.save_screenshot('main.png') #定位到了验证码图片对应的标签 code_img_ele = bro.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]/li[4]/div/div/div[3]/img') location = code_img_ele.location #验证码图片基于当前整张页面的左下角坐标 size = code_img_ele.size #验证码图片的长和宽 print(location,size) x1 = location['x'] y1 = location['y'] x2 = location['x'] + size['width']*1.33#由于我的电脑图片显示出来的实际尺寸要比实际尺寸要大所以手动的调整1.33倍 y2 = location['y'] + size['height']*1.33 #裁剪的矩形区域(左下角和右上角两点的坐标) rangle = (x1+100,y1+65,x2+100,y2+65)#x,y的坐标也有问题,所以又手动调整了坐标 i = Image.open('main.png') frame = i.crop(rangle) frame.save('code.png')
原文地址:https://www.cnblogs.com/blackball9/p/11979924.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Promise教程之产房里生孩子的故事
- 一个现实生活中的例子让你理解Promise的使用场景
- react 跨级组件传参方式 context方式的传参
- Excel文件导入导出操作
- nprogress路由切换添加进度条
- vue-json-excel导出excle表格
- Dom树 CSS树 渲染树(render树) 规则、原理
- Canvas圆形时钟
- 浅谈 Hooks
- Java进阶训练营 第一周JVM 预习笔记
- LeetCode905. 按奇偶排序数组 题解
- codeforces 1133D (map+精度控制)
- 只要十步,你就可以应用表达式树来优化动态调用
- 宏任务和微任务的一个小事
- 如何使用ES6的新特性async await进行异步处理