zoukankan      html  css  js  c++  java
  • 获取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_win32chromedriver.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')#将图片保存

    sleep(2)#睡两秒
    action = ActionChains(bro)#实例化动作链
    #根据图片的尺寸随机生成了四个坐标点位
    all_list = []
    for i in range(4):
    x = random.randint(0, 285)
    y = random.randint(0,180)
    all_list.append((x,y))
    print(all_list)
    #使用动作链找到图片位置后做点击动作,点击一次睡一秒
    for l in all_list:
    x = l[0]
    y = l[1]
    ActionChains(bro).move_to_element_with_offset(code_img_ele,x,y).click().perform()
    sleep(1)

    #关闭浏览器其实我们模拟登陆之后一般都是将cookie保存下来 方便再次使用
    cookie = bro.get_cookies()

    bro.quit()



  • 相关阅读:
    发布Web端
    回溯算法套路详解(转)
    埋点自动化测试框架设计
    Mitmproxy + Python 做拦截代理
    面向对象三大特性-多态的思考
    java集合类-Set接口
    java集合类-List接口
    java集合类-集合框架体系
    测试的Python、 Java语言之争
    Python迭代器、生成器
  • 原文地址:https://www.cnblogs.com/blackball9/p/11979924.html
Copyright © 2011-2022 走看看