#!/usr/bin/python3 # -*- coding: utf-8 -*- import requests import base64 from selenium import webdriver import re from selenium.webdriver import ActionChains import time driver = webdriver.Chrome() def login(): driver.get('https://kyfw.12306.cn/otn/resources/login.html') driver.find_element_by_link_text("账号登录").click() driver.find_element_by_xpath('//*[@id="J-userName"]').send_keys("12020202020") driver.find_element_by_xpath('//*[@id="J-password"]').send_keys("12020202020") image_url=driver.find_element_by_xpath('//*[@id="J-loginImg"]').get_attribute('src') get_image(image_url) def get_image(image_url): #base64图片解码,并保存图征 base4_url=image_url.split(',')[-1] img_data=base64.b64decode(base4_url)#转成二进制 with open('yzm.jpg',mode='wb') as f: f.write(img_data) def yzm_result(): image_data=open('yzm.jpg',mode='rb') file={'pic_xxfile':image_data} res=requests.post(url='http://littlebigluo.qicp.net:47720',files=file) result=[] for i in re.findall('<B>(.*?)</B>',res.text)[0].split(' '): result.append(int(i)) print(result) image_data.close() return result def click_login(result): img_element=driver.find_element_by_xpath('//*[@id="J-loginImg"]') action=ActionChains(driver) for i in result: MAP=[[-105,-20],[-35,-20],[40,-20],[110,-20],[-105,50],[-35,50],[40,50],[110,50]] action.move_to_element(img_element).move_by_offset(MAP[i-1][0],MAP[i-1][1]).click() time.sleep(1) action.perform() time.sleep(1) driver.find_element_by_xpath('//*[@id="J-login"]').click() driver.implicitly_wait(10) def run(): login() result=yzm_result() click_login(result) if __name__ == '__main__': run()
python综合应用selenium实现12306自动登录,自动识别验证码
阅读:2856 输入:2020-06-16 22:07:14