python——利用selenium实现12306模拟登录

# 12306模拟登录编码流程
# 1、使用selenium打开登录页面   2、对当前selenium打开的这张页面进行截图  3、对当前图片局部区域(验证码图片)进行裁剪  (好处:将验证码图片和模拟登录进行一一对应)
# 4、使用超级鹰识别验证码图片(坐标)


from selenium import webdriver
import time
from selenium.webdriver import ActionChains
from PIL import  Image
bro=webdriver.Chrome('./chromedriver.exe')
bro.get('https://kyfw.12306.cn/otn/login/init')
time.sleep(1)
bro.save_screenshot('aa.png')
# 对页面进行截图   save_screenshot()
code_img=bro.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]')
location=code_img.location
size=code_img.size

# 确定验证码图片左上角和右下角坐标

rangle=(int(location['x']),int(location['y']),int(location['x'])+size['width'],int(location['y']+size['height']))
# 至此验证码区域就确定下来

i=Image.open('aa.png')
code_img_name='./code.png'
frame=i.crop(rangle)
frame.save(code_img_name)
# 将验证码交给超级鹰  进行识别

ch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用selenium模拟登录12306的步骤: 1.安装selenium库和浏览器驱动,这里以Chrome浏览器为例。 2.导入selenium库和time库。 3.创建一个Chrome浏览器对象,并设置浏览器窗口大小。 4.使用get()方法打开12306登录页面。 5.使用find_element_by_xpath()方法找到用户名输入框和密码输入框,并使用send_keys()方法输入用户名和密码。 6.使用find_element_by_xpath()方法找到验证码图片,并使用selenium的ActionChains类模拟鼠标操作,将验证码图片拖动到指定位置。 7.使用find_element_by_xpath()方法找到登录按钮,并使用click()方法点击登录按钮。 8.使用time库的sleep()方法等待页面跳转。 9.使用current_url属性获取当前页面的URL,如果URL中包含“login”字符串,则说明登录失败,否则登录成功。 ```python # 导入库 from selenium import webdriver import time # 创建浏览器对象 browser = webdriver.Chrome() browser.set_window_size(1200, 800) # 打开12306登录页面 browser.get('https://kyfw.12306.cn/otn/resources/login.html') # 输入用户名和密码 username = browser.find_element_by_xpath('//*[@id="username"]') password = browser.find_element_by_xpath('//*[@id="password"]') username.send_keys('your_username') password.send_keys('your_password') # 破解验证码 slider = browser.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]/li[4]/div/div/div[1]/canvas') ActionChains(browser).drag_and_drop_by_offset(slider, 258, 0).perform() # 点击登录按钮 login_button = browser.find_element_by_xpath('//*[@id="loginSub"]') login_button.click() # 等待页面跳转 time.sleep(5) # 判断是否登录成功 if 'login' in browser.current_url: print('登录失败') else: print('登录成功') # 关闭浏览器 browser.quit() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值