#!/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自动登录,自动识别验证码
阅读:4029 输入:2020-06-16 22:07:14