您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页python自动化脚本:12306-火车票购票

python自动化脚本:12306-火车票购票

来源:伴沃教育

1.导包:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

2.选择浏览器驱动:这里选择的是Chrome

driver=webdriver.Chrome()
# 12306查票的网址
driver.get('https://kyfw.12306.cn/otn/leftTicket/init')

网址打开长这样:

 

 设置等待,有三种方式,第一种是死等:time.sleep()。第二种是显示等待WebDriverWait,第三种是隐式等待:implicitly_wait。为什么要设置等待?因为当页面跳转的时候下个页面的数据海没有加载出来,容易导致我们下面的代码报错,我这里使用的是隐式等待,因为只用设置一次哈哈哈哈

driver.implicitly_wait(10)

 输入出发地,到达地,和出发时间

fromStationText=input('请输入出发地:')
driver.find_element(By.ID,'fromStationText').click()
driver.find_element(By.ID,'fromStationText').clear()
driver.find_element(By.ID,'fromStationText').send_keys(fromStationText)
driver.find_element(By.ID,'fromStationText').send_keys(Keys.ENTER)

# 输入到达地点
toStationText=input('请输入出发地:')
driver.find_element(By.ID,'toStationText').click()
driver.find_element(By.ID,'toStationText').clear()
driver.find_element(By.ID,'toStationText').send_keys(toStationText)
driver.find_element(By.ID,'toStationText').send_keys(Keys.ENTER)

# 输入日期
date=input('请输入出发时间:')
driver.find_element(By.ID,'train_date').click()
driver.find_element(By.ID,'train_date').clear()
driver.find_element(By.ID,'train_date').send_keys(date)
driver.find_element(By.ID,'train_date').send_keys(Keys.ENTER)

对应到操作页面是这样的: 记住一定要设置回车按钮!!!

 点击查询车票:

driver.find_element(By.ID,'query_ticket').click()

考虑到各位的经济实力,我这里设置的是二等座,当然可以调整,无非换一个id名字

driver.find_element(By.ID,'cc_seat_type_O_check').click()

点击预定,我这里用的是完整的Xpath,大家也可以使用其他方法

driver.find_element(By.XPATH,'/html/body/div[2]/div[7]/div[12]/table/tbody/tr[1]/td[12]/a').click()

登录12306

username='自己的电话号码'
pwd='自己的12306密码'


driver.find_element(By.ID,'J-userName').send_keys(username)

driver.find_element(By.ID,'J-password').send_keys(pwd)

driver.find_element(By.ID,'J-login').click()

 验证登录:执行到这里的时候需要填写12306发送给你手机号的验证码

sfz='自己的身份证后四位'
driver.find_element(By.ID,'id_card').send_keys(sfz)
driver.find_element(By.ID,'verification_code').click()
yanzma=input("输入验证码:")
driver.find_element(By.ID,'code').send_keys(yanzma)
driver.find_element(By.ID,'sureClick').click()

 选择乘车人信息,点击提交订单

driver.find_element(By.ID,'normalPassenger_0').click()
driver.find_element(By.ID,'submitOrder_id').click()

到这里就抢到票了,自己去支付一下就ok了!

完整代码:记得填写自己的手机号,密码,身份证后四位就可以使用了

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

driver=webdriver.Chrome()

driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
driver.implicitly_wait(10)

# 输入出发地
fromStationText=input('请输入出发地:')
driver.find_element(By.ID,'fromStationText').click()
driver.find_element(By.ID,'fromStationText').clear()
driver.find_element(By.ID,'fromStationText').send_keys(fromStationText)
driver.find_element(By.ID,'fromStationText').send_keys(Keys.ENTER)

# 输入到达地点
toStationText=input('请输入出发地:')
driver.find_element(By.ID,'toStationText').click()
driver.find_element(By.ID,'toStationText').clear()
driver.find_element(By.ID,'toStationText').send_keys(toStationText)
driver.find_element(By.ID,'toStationText').send_keys(Keys.ENTER)

# 输入日期
date=input('请输入出发时间:')
driver.find_element(By.ID,'train_date').click()
driver.find_element(By.ID,'train_date').clear()
driver.find_element(By.ID,'train_date').send_keys(date)
driver.find_element(By.ID,'train_date').send_keys(Keys.ENTER)

# 查询车票
driver.find_element(By.ID,'query_ticket').click()
# time.sleep(1)
# 二等座
driver.find_element(By.ID,'cc_seat_type_O_check').click()
# 预定车票
driver.find_element(By.XPATH,'/html/body/div[2]/div[7]/div[12]/table/tbody/tr[1]/td[12]/a').click()


username='自己的手机号'
pwd='登录密码'


driver.find_element(By.ID,'J-userName').send_keys(username)

driver.find_element(By.ID,'J-password').send_keys(pwd)

driver.find_element(By.ID,'J-login').click()

sfz='自己的身份证后四位'
driver.find_element(By.ID,'id_card').send_keys(sfz)
driver.find_element(By.ID,'verification_code').click()
yanzma=input("输入验证码:")
driver.find_element(By.ID,'code').send_keys(yanzma)
driver.find_element(By.ID,'sureClick').click()

driver.find_element(By.ID, 'normalPassenger_0').click()
driver.find_element(By.XPATH,'//*[@id="dialog_xsertcj_cancel"]').click()
# driver.find_element(By.ID,'qr_submit_id').click() 
driver.find_element(By.ID, 'submitOrder_id').click()
driver.find_element(By.XPATH, '//*[@id="1A"]').click()
driver.find_element(By.ID,'qr_submit_id').click()

都看到这里了,点个赞呗!!!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务