100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 12306火车票余票自动查询 Python selenium

12306火车票余票自动查询 Python selenium

时间:2020-04-12 22:41:28

相关推荐

12306火车票余票自动查询 Python selenium

12306火车票余票自动查询 Python selenium

废话不多说,直接上代码

废话不多说,直接上代码

#!/usr/bin/env python3# -*- coding: utf-8 -*-# @Time : /1/15 下午12:08# @Author : H贤笙# @File : 12306_info.pyimport jsonimport timefrom captcha import *from selenium import webdriverfrom mon.by import Byfrom selenium.webdriver.support import waitfrom mon.keys import Keysfrom mon.exceptions import NoSuchElementExceptionfrom mon.action_chains import ActionChainsfrom selenium.webdriver.support import expected_conditions as ECtry:options = webdriver.ChromeOptions()options.add_argument("--disable-blink-features=AutomationControlled")browser = webdriver.Chrome(options=options)browser.maximize_window()url = '/index/index.html'browser.get(url)except:print("12306打开失败!")browser.close()browser.find_element_by_xpath('//*[@id="J-chepiao"]/a').click()browser.find_element_by_xpath('//*[@id="megamenu-3"]/div[1]/ul/li[1]/a').click()try:browser.find_element_by_xpath('//*[@id="qd_closeDefaultWarningWindowDialog_id"]').click()except:pass# 余票查询# 将出发地、目的地、出发日期填进去def input_info():print('=====开始查询=====')# 出发地from_station = browser.find_element_by_id("fromStationText")from_station.click()# time.sleep(1)from_station.send_keys(start_station)from_station.send_keys(Keys.ENTER)time.sleep(0.5)# 目的地to_station = browser.find_element_by_id("toStationText")to_station.click()to_station.send_keys(end_station)to_station.send_keys(Keys.ENTER)time.sleep(0.5)# 找到出发站、到达站的隐藏HTML标签js = "document.getElementById('train_date').removeAttribute('readonly')" # 去除日期栏只读属性browser.execute_script(js)start_date = browser.find_element_by_id("train_date")start_date.clear()start_date.send_keys(date) # 写入乘车日期start_date.click()time.sleep(0.5)# 执行单击查询操作query_ticket_tag = browser.find_element_by_id('query_ticket')query_ticket_tag.click()def buy_ticket():# 依次查找trains中的车次是否有票,有的话点击购买trList = browser.find_elements_by_xpath(".//tbody[@id='queryLeftTable']/tr[not(@datatran)]")for tr in trList:trainNum = tr.find_element_by_class_name("number").text#print(trainNum)if trainNum in trains:leftTicket = tr.find_element_by_xpath(".//td[4]").textprint('leftTicket', leftTicket)if leftTicket == '有' or leftTicket.isdigit():orderBtn = tr.find_element_by_class_name("btn72")orderBtn.click()browser.implicitly_wait(5)passengerLabels = browser.find_elements_by_xpath(".//ul[@id='normal_passenger_id']/li/label")for passengerLabel in passengerLabels:name = passengerLabel.textif name in names:passengerLabel.click()browser.implicitly_wait(20)# 获取提交按钮submitBtn = browser.find_element_by_id("submitOrder_id")submitBtn.click()browser.implicitly_wait(20)confirmBtn = browser.find_element_by_id("qr_submit_id")confirmBtn.click()time.sleep(2)browser.implicitly_wait(20)confirmBtn = browser.find_element_by_id("qr_submit_id")confirmBtn.click()breakelif leftTicket == '候补':print("目前只有候补车票!")if __name__ == '__main__':purpose = 'ADULT' # 购买成人票,如果是学生票,需调整代码date = '-01-29' # 填写购票日期start_station = '合肥南' # 购票出发站end_station = '十堰东' # 购票目的站trains = ['G3231'] # 你想买的班次input_info()time.sleep(0.5)buy_ticket()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。