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

  • 废话不多说,直接上代码

废话不多说,直接上代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2022/1/15 下午12:08
# @Author  : H贤笙
# @File    : 12306_info.pyimport json
import time
from captcha import *
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import wait
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from 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 = 'https://www.12306.cn/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 = '2022-01-29'  # 填写购票日期start_station = '合肥南'  # 购票出发站end_station = '十堰东'  # 购票目的站trains = ['G3231']  # 你想买的班次input_info()time.sleep(0.5)buy_ticket()

12306火车票余票自动查询 Python selenium相关推荐

  1. Python爬虫----12306火车票余票查询器

    12306火车票余票查询器 文章同步更新:http://www.riba2534.cn/?p=305 今天写了一个12306火车票余票查询器的爬虫,在这里记录一下过程. 首先先看一下最终效果: 比如想 ...

  2. 项目实战一 12306火车票余票查询软件

    1.安装docopt.urllib.requests 2.实现程序基础框架 # -*- coding:utf-8 -*-""" Train tickets query p ...

  3. python爬虫实现火车票余票查询

    python爬虫实现火车票余票查询 获取终端输入的命令行参数 重构请求url,解析返回的json数据 获取终端输入的命令行参数 例如:python3 tickets.py -dg 成都 南京 2016 ...

  4. Python爬虫入门(一)火车票余票实时提醒

    Python爬虫入门(一)火车票余票实时提醒 火车票余票实时提醒 最近开始学习爬虫了,参考的教材是<Python网络爬虫从入门到精通>吕云翔,张扬,韩延刚等,机械工业出版社.本篇博客是实战 ...

  5. 12306之余票查询流程解析

    前言 本套教程共分3章: 12306之登录流程解析 12306之余票查询解析 12306之下单流程解析 本套内容主要用于分析12306购票流程,意在编写一套自动购票小程序.12306接口 api 经常 ...

  6. 12306火车余票查询

    测试地址:http://gengjian.24.lc/japson/123060.htm 调用12306官网的查询接口. 123060.htm 火车票余票查询Demo By Genng.<br& ...

  7. 12306实时余票查询接口

    12306实时余票查询接口代码文档及返回示例,可查询实时火车票余票,包括车次.车次始发站.车次终点站.出发时间.到达时间.车次类型.总历时时间等等. 接口名称:12306实时余票查询接口 接口平台:聚 ...

  8. 用python写12306系统_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python实现12306火车票抢票系统.txt ] (友情提示:右键点 ...

  9. 基于python的火车票订票系统的设计与实现_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统效果图如下所示: 具体代码如下所示: import urllib.request as request import http.cookiejar as coo ...

  10. 火车票余票接口和火车票接口查询出来喽

    火车票余票接口 经过本人无数次的尝试终于成功获取到12306官网的余票数据.

最新文章

  1. C#跑马灯,图片滚动,后台获取图片地址。动态绑定图片,imag显示文字
  2. ubuntu笔记:查看Ubuntu的包依赖关系
  3. 剑桥大学eap入学测试准备!!!救命稻草
  4. C++对C的加强之三目运算符功能增强
  5. 查询数据库 收集 (如某个字段不是中文)
  6. IOS之学习笔记九(对象的初始化)
  7. yii 执行指定迁移文件_laravel的迁移文件
  8. 男人有钱还是没钱,只需要关注他这三点,就明白了
  9. C#中的问号运算符简介
  10. [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!...
  11. 微信小程序+springboot+shiro实现登录
  12. 易语言操作数据库之Access数据库(数据库连接和记录集组件)
  13. python 循环语句s =2+22+222+2222之和_python算法题
  14. ros路由器cpu占用率高的原因和解决
  15. docker安装gitlab
  16. click与onclick的区别
  17. 给要入门量化分析的人一些建议(转)
  18. mysql硬盘最长活动时间100%_win10磁盘活动时间100%,小编告诉你解决方法
  19. java 提取违反顺序_oracle 中 java.sql.SQLException: ORA-01002: 提取违反顺序
  20. SVN服务器迁移操作

热门文章

  1. 单元测试测试用例覆盖率为0
  2. 情商和逆商比智商更重要
  3. Internet Explorer无法打开Internet 站点的原因
  4. java中md5加密解密_「md5加密解密」Java实现MD5加密解密 - seo实验室
  5. java fillrect_Java graphics2D fillRect无法使用半透明颜色正常...
  6. 数据仓库多维数据模型设计
  7. 企业常见的5种经济活动形式用借贷记账法在资产负债表上的体现
  8. 巨人史玉柱放弃独权:放任年轻研发团队犯错
  9. matlab output()函数,matlab 函数y=f(input,output)该如何实现?
  10. c语言n的阶乘 longfact,如何定义函式fact(n) 计算n的阶乘:n!=1*2*……*n,函式返回值型别是double?...