史上最短代码 python登入12306

最近想尝试下验证码问题,立马想到了12306,打开网页一看,用机器识别什么的估计麻烦,但人很容易知道在哪啊,一共八个图片 只要把鼠标移动到每个图片里面就可以了,最好就取每个图片中心点嘛 !那就用selenium模拟嘛,直接上代码!
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import urllib.request
import pyautogui

class Cracktrain():
def init(self):
self.url = ‘https://kyfw.12306.cn/otn/resources/login.html
self.browser = webdriver.Chrome()
self.wait = WebDriverWait(self.browser, 10)

def open(self):
    """
    打开网页输入用户名密码并点击
    :return: None
    """
    self.browser.get(self.url)
    login1 = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'login-hd-account')))
    login1.click()
    username = self.wait.until(EC.presence_of_element_located((By.ID, 'J-userName')))
    #找到输入用户名框
    username.send_keys('你的帐号')
    password = self.wait.until(EC.presence_of_element_located((By.ID, 'J-password')))
    #找到输入密码框
    password.send_keys('你的密码')
def main(self):
    login1 = self.browser.find_element_by_id('J-login')
    #找到登入按钮
    message = input('Please Enter message: ')
    #手动输入位置 每个位置坐标都在dst里面 因此输入分别为0-7,如果输入两个以上
    #每个之间加个空格键就可以了 如何获取每个点的位置我先用鼠标移动到该点,在让
    #它自动打印出来 代码如下  前面代码都一样
    #for i in range(8):
    # message = input('Please Enter message: ')
    #time.sleep(5) #等待5 秒好让你有时间将鼠标移动到该点上
    #currentMouseX, currentMouseY = pyautogui.position()#当前鼠标位置
    #print(pyautogui.position())#这样我循环8次,得到每个图片中心位置dst
    
    for l in message:
        try:
            dst = [(767,493),(840,493),(916,493),(990,493),
                   (772,570),(840,570),(916,570),(990,570)]
            i = int(l)
            pyautogui.moveTo(dst[i][0],dst[i][1])
            time.sleep(1)
            pyautogui.click()
            time.sleep(1)
        except:
            pass
    login1.click()

if name == ‘main’:
crack = Cracktrain()
crack.open()
crack.main()
#剩下的又是模拟点击就OK了就是那个坐标尝试了很久,还有那个L=int(i)
#把try 写for前面不行 dst写出去也不行 就这个貌似能用 分享出来吧 haha
结果如图 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值