城市售票网验证码图片的获取

import time

from selenium import webdriver
from PIL import Image
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


def getScreenshot():
    # 设置无头浏览器
    opt = webdriver.ChromeOptions()
    # opt.set_headless()
    driver = webdriver.Chrome(options=opt)
    driver.maximize_window()
    driver.get('http://msg.urbtix.hk/')
    WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located((By.LINK_TEXT,'登入')))
    driver.find_element_by_class_name('mem-login-state-link').click()
    WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,'captchaImage')))
    time.sleep(2)
    # 获取验证码图片
    currentpage = './captchaImages/currentpage.png'
    driver.save_screenshot(currentpage)
    # 找到验证码元素的节点id
    captchaImage_element = driver.find_element_by_id('captchaImage')
    # print(captchaImage_element.location)  # 打印验证码元素的坐标位置
    # print(captchaImage_element.size)      # 打印验证码元素的大小
    left = captchaImage_element.location['x']
    top = captchaImage_element.location['y']
    right = captchaImage_element.location['x'] + captchaImage_element.size['width']
    bottom = captchaImage_element.location['y'] + captchaImage_element.size['height']
    # 找到验证码的位置并保存
    image = Image.open(currentpage)
    image = image.crop((left,top,right,bottom))
    image.save('./images/capimg.png')
    # 获取每一个点击验证码图片
    click_captchaImage1 = driver.find_elements_by_xpath('//form/div/div/table/tbody/tr/td/table/tbody/tr[@class="login-tbl-captcha-image-row captcha-row"][3]/td/table/tbody/tr/td/img')
    # print(len(click_captchaImage1)) # 打印点击验证码所有节点的长度
    for i,img in enumerate(click_captchaImage1):
        left =img.location['x']
        top =img.location['y']
        right =img.location['x'] + img.size['width']
        bottom =img.location['y'] + img.size['height']
        img = Image.open(currentpage)
        img =img.crop((left,top,right,bottom))
        img.save('./images/' + str(i) + '.png')

if __name__ == '__main__':
	getScreenshot()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值