12306抢票脚本 python_如何使用Python实现12306抢票?摆脱无票可买的窘境
前言
十一已经过去一个星期了,下一个假期就是元旦啦,每一次假期购票都得抢到“头破血流”,所以小编经历过这次十一之后就在想做一个抢票小助手,经过几天的构思后,终于写了出来。
一、爬虫是什么?
爬虫一般指网络爬虫。网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
工具:pycharm+python3.7
二、使用步骤
1.引入库
代码如下(示例):
下面便是纯代码啦,考虑到有许多朋友看不懂代码,只是需要这个抢票小助手,所以抢票小助手我已经打包好了,需要的朋友可以关注小编并在后天私信“01”即可领取!
# -*- coding:utf-8 -*-"""@author 恒仔仔"""from splinter.browser import Browserfrom time import sleepimport tracebackimport time, sysimport os
2.爬虫代码
代码如下(示例):
class HuoChe(object): """docstring for Train""" driver_name = '' executable_path = '' # 用户名 密码 username = u"12306帐户名" passwd = u"12306密码" # cookies值自己找 # 天津%u5929%u6D25%2CTJP 南昌%u5357%u660C%2CNCG 桂林%u6842%u6797%2CGLZ starts = u"%u5929%u6D25%2CTJP" ends = u"%u5357%u660C%2CNCG" # 时间格式2020-10-09 dtime = u"2020-10-09" # 车次,选择第几趟,0则从上之下依次点击 order = 0 ###乘客姓名 users = [u'乘客名'] ##席位 xb = u"二等座" pz = u"成人票" """网址""" # 12306查询URL ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init" # 12306登录URL login_url = "https://kyfw.12306.cn/otn/login/init" # 我的12306URL initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306" # 购票URL buy = "https://kyfw.12306.cn/otn/confirmPassenger/initDc" login_url = 'https://kyfw.12306.cn/otn/login/init' def __init__(self): self.driver_name = 'chrome' self.executable_path = os.getcwd() + '/chromedriver' print("Welcome To Use The Tool") def login(self): self.driver.visit(self.login_url) # 填充密码 self.driver.fill("loginUserDTO.user_name", self.username) self.driver.fill("userDTO.password", self.passwd) print("等待验证码,自行输入....") while True: if self.driver.url != self.initmy_url: sleep(1) else: break def start(self): self.driver = Browser(driver_name=self.driver_name, executable_path=self.executable_path) self.driver.driver.set_window_size(1400, 1000) self.login() self.driver.visit(self.ticket_url) try: print("购票页面开始....") # 加载查询信息 self.driver.cookies.add({"_jc_save_fromStation": self.starts}) self.driver.cookies.add({"_jc_save_toStation": self.ends}) self.driver.cookies.add({"_jc_save_fromDate": self.dtime}) self.driver.reload() count = 0 if self.order != 0: while self.driver.url == self.ticket_url: self.driver.find_bytext(u"查询").click() count += 1 print("循环点击查询.... 第 %s 次" % count) try: self.driver.find_by_text(u'预订')[self.order - 1].click() except Exception as e: print(e) print("还没开始预订") continue else: while self.driver.url == self.ticket_url: self.driver.find_by_text(u"查询").click() count += 1 print("循环点击查询.... 第 %s 次" % count) try: for i in self.driver.find_by_text(u"预订"): i.click() sleep(1) except Exception as e: print(e) print("还没开始预订 %s " % count) continue print("开始预订....") sleep(1) print("开始选择用户....") for user in self.users: self.driver.find_by_text(user).last.click() print("提交订单....") sleep(1) self.driver.find_by_id('submitOrder_id').click() print("开始选座...") sleep(1.5) print("确认选座....") self.driver.find_by_text('qr_submit_id').click() except Exception as e: print(e)
3.城市编码
12306上的这些城市名与编码一一对应,在浏览器中打开开发者工具(F12)查看详细内容。
cities = { '天津': '%u5929%u6D25%2CTJP', '南昌': '%u5357%u660C%2CNCG', '桂林': '%u6842%u6797%2CGLZ'}
4.主程序
if __name__ == "__main__": train = HuoChe() train.starts = cities[sys.argv[1]] train.ends = cities[sys.argv[2]] train.dtime = sys.argv[3] train.start()
运行代码的脚本命令
python trainticket.py 天津 南昌 2020-10-09
结尾
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
12306抢票脚本 python_如何使用Python实现12306抢票?摆脱无票可买的窘境相关推荐
- 12306抢票脚本 python_春运抢票靠加速包?试试这个 Python 开源项目吧
作者 | 非主流 出品 | Python大本营 又是一年春运,又到了拼手速.拼人品的时刻. 然而随着抢票软件的日益流行,拼加速包已经成为新的流行趋势.不过花钱买来的加速包真的有用吗? <工人日报 ...
- 五一出行一票难求,用Python实现12306火车票自动抢票,省心省力!
最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正.话不多说,进入正题: 在进入正题之前,我想说明一下,由于12306官网 ...
- python抢票代码_如何使用python爬取抢票?
有身在异乡的小伙伴们?相信绝大多数的小伙伴都曾有过离开过,或现在是,独在异乡的情况吧,拿小编来说,小编现在就是这种状况,回家次数不多,不是因为没有时间,而是因为没有车票,每次都需要拿抢票软件,于是,脑 ...
- python模拟火车订票系统_如何用python编写火车抢票助手
前几天跟朋友说打算写一个抢票助手,最后由于某些原因念头打消了. 可就在昨天晚上,才隐约记起一年前的自己曾经说过:一年后我一定要写一个12306的抢票助手!瞬间激情澎湃,甚至已经是快临近凌晨时便开始动工 ...
- 抢茅台脚本居然用的Python,我们Python真是太强大了---图拉夫
大家好,我是阿喵 12 月我在朋友圈看到非常多的人开始在某东上抢茅台,抢到的话一瓶只要 1499 元,转手一卖就能净赚 1000 块钱,这简直就是白送钱的事嘛?冲冲冲,就算不卖,自己囤着过个几年价格肯 ...
- python抢货程序_写个Python程序上下班抢个顺风单
#!/usr/bin/python # -*- coding: gb2312 -*- ######################################################### ...
- python抢票脚本好用吗_春运到了,带你用python来抢票回家!
不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...
- 快过年了,Python实现12306查票以及自动购票....
嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...
- Python 实现的12306抢票脚本
Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤: - 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等). - 建立模拟浏 ...
最新文章
- 201421410040 张运焘 实验一
- 白盒测试工具 - sonar报告常见示例分析,sonar代码质量问题分析演示
- 静态链接库LIB和动态链接库DLL的区别 创建和示例
- 二 SVN代码冲突的解决
- Android控件系列之XML静态资源
- php 连接主从redis,PHP7对Redis的扩展及Redis主从搭建
- 格式化字符串漏洞利用 四、利用的变体
- Linux设备驱动:DMA 接口API
- 此处不允许使用分组函数_查找当前薪水排名第二多的员工信息(不使用order by和窗口函数)...
- JavaScript的高大强
- HTML hidden 属性
- 基于VS快速排序的单元测试
- dea模型java实例_Java数据流学习 - osc_deasqda4的个人空间 - OSCHINA - 中文开源技术交流社区...
- Django教程(为什么选择Django框架)
- Office小技巧|Excel表格输入身份证数字就变了乱码怎么办?
- powerha_使用IBM PowerHA SystemMirror的Hitachi TrueCopy镜像
- JAVA 根据商品属性生成(SKU)规格算法
- 电脑开机后网络一直转圈,程序也打不开——亲测解决办法
- 各软件版本、仓库、官网地址
- 基于单片机的公交车报站系统
热门文章
- Oracle 11g AMM与ASMM切换
- nginx已添加systemctl,但不能开机自启动问题
- Spring Boot+Docker微服务分布式服务架构设计和部署案例
- PowerShell针对SCVMM批量导出模板的描述信息以及导入
- 将assembly包添加到自己的maven仓库
- smarty模板引擎原理解析
- Dom4j 解析Xml文档及XPath查询 学习笔记
- 新时代网管的十二大主要职责(一)
- c语言 将url图片存到本地_一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……...
- matlab 显示3d频谱_matlab 关于频谱分析程序集锦