码迷,mamicode.com
首页 > 其他好文 > 详细

获取12306之类的验证码图片

时间:2019-12-03 23:26:35      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:div   scree   col   需要   bsp   就是   ble   ima   window   

就目前来看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=rE:\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)

 

 

获取12306之类的验证码图片

标签:div   scree   col   需要   bsp   就是   ble   ima   window   

原文地址:https://www.cnblogs.com/blackball9/p/11979924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!