前言

十一已经过去一个星期了,下一个假期就是元旦啦,每一次假期购票都得抢到“头破血流”,所以小编经历过这次十一之后就在想做一个抢票小助手,经过几天的构思后,终于写了出来。

一、爬虫是什么?

爬虫一般指网络爬虫。网络爬虫(又称为网页蜘蛛,网络机器人,在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抢票?摆脱无票可买的窘境相关推荐

  1. 12306抢票脚本 python_春运抢票靠加速包?试试这个 Python 开源项目吧

    作者 | 非主流 出品 | Python大本营 又是一年春运,又到了拼手速.拼人品的时刻. 然而随着抢票软件的日益流行,拼加速包已经成为新的流行趋势.不过花钱买来的加速包真的有用吗? <工人日报 ...

  2. 五一出行一票难求,用Python实现12306火车票自动抢票,省心省力!

    最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正.话不多说,进入正题: 在进入正题之前,我想说明一下,由于12306官网 ...

  3. python抢票代码_如何使用python爬取抢票?

    有身在异乡的小伙伴们?相信绝大多数的小伙伴都曾有过离开过,或现在是,独在异乡的情况吧,拿小编来说,小编现在就是这种状况,回家次数不多,不是因为没有时间,而是因为没有车票,每次都需要拿抢票软件,于是,脑 ...

  4. python模拟火车订票系统_如何用python编写火车抢票助手

    前几天跟朋友说打算写一个抢票助手,最后由于某些原因念头打消了. 可就在昨天晚上,才隐约记起一年前的自己曾经说过:一年后我一定要写一个12306的抢票助手!瞬间激情澎湃,甚至已经是快临近凌晨时便开始动工 ...

  5. 抢茅台脚本居然用的Python,我们Python真是太强大了---图拉夫

    大家好,我是阿喵 12 月我在朋友圈看到非常多的人开始在某东上抢茅台,抢到的话一瓶只要 1499 元,转手一卖就能净赚 1000 块钱,这简直就是白送钱的事嘛?冲冲冲,就算不卖,自己囤着过个几年价格肯 ...

  6. python抢货程序_写个Python程序上下班抢个顺风单

    #!/usr/bin/python # -*- coding: gb2312 -*- ######################################################### ...

  7. python抢票脚本好用吗_春运到了,带你用python来抢票回家!

    不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...

  8. 快过年了,Python实现12306查票以及自动购票....

    嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...

  9. Python 实现的12306抢票脚本

    Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤: - 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等). - 建立模拟浏 ...

最新文章

  1. 201421410040 张运焘 实验一
  2. 白盒测试工具 - sonar报告常见示例分析,sonar代码质量问题分析演示
  3. 静态链接库LIB和动态链接库DLL的区别 创建和示例
  4. 二 SVN代码冲突的解决
  5. Android控件系列之XML静态资源
  6. php 连接主从redis,PHP7对Redis的扩展及Redis主从搭建
  7. 格式化字符串漏洞利用 四、利用的变体
  8. Linux设备驱动:DMA 接口API
  9. 此处不允许使用分组函数_查找当前薪水排名第二多的员工信息(不使用order by和窗口函数)...
  10. JavaScript的高大强
  11. HTML hidden 属性
  12. 基于VS快速排序的单元测试
  13. dea模型java实例_Java数据流学习 - osc_deasqda4的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. Django教程(为什么选择Django框架)
  15. Office小技巧|Excel表格输入身份证数字就变了乱码怎么办?
  16. powerha_使用IBM PowerHA SystemMirror的Hitachi TrueCopy镜像
  17. JAVA 根据商品属性生成(SKU)规格算法
  18. 电脑开机后网络一直转圈,程序也打不开——亲测解决办法
  19. 各软件版本、仓库、官网地址
  20. 基于单片机的公交车报站系统

热门文章

  1. Oracle 11g AMM与ASMM切换
  2. nginx已添加systemctl,但不能开机自启动问题
  3. Spring Boot+Docker微服务分布式服务架构设计和部署案例
  4. PowerShell针对SCVMM批量导出模板的描述信息以及导入
  5. 将assembly包添加到自己的maven仓库
  6. smarty模板引擎原理解析
  7. Dom4j 解析Xml文档及XPath查询 学习笔记
  8. 新时代网管的十二大主要职责(一)
  9. c语言 将url图片存到本地_一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……...
  10. matlab 显示3d频谱_matlab 关于频谱分析程序集锦