Python脚本实现12306火车票自动抢票回家or旅游

打响春运第一枪,为购票做准备,用Python制作一个12306抢票脚本! Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互,Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。不久就要迎来春运,今年除夕不放假,你还回家过年吗?为了购票我自己写了个抢票脚本。使用Python+Splinter自动刷新抢票,可以成功抢到。(依赖自己的网络环境太厉害,还有机器的好坏) 阅读详情

前言

最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正。话不多说,进入正题:

这个脚本目前只能刷一趟车的,人数可以是多个,支持选取作为类型等。
实现思路是splinter.browser模拟浏览器登陆和操作,由于12306的验证码不好自动识别,所以,验证码需要用户进行手动识别,并进行登陆操作,之后的事情,就交由脚本来操作就可以了,下面是我测试时候的一些截图:

需要Python零基础学习资料的伙伴,可以在公众号【码农资料库】中回复【py】自行领取 包括以下学习资料:

① Python所有方向的学习路线图,清楚各个方向要学什么东西

②Python课程视频,涵盖必备基础、爬虫和数据分析

③ Python实战案例,学习不再是只会理论

④ Python电子好书,从入门到高阶应有尽有

⑤ 华为出品独家Python漫画教程,手机也能学习 ⑥ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

第一步:如下图,首先输入抢票基本信息

Dingtalk_20220115135236.jpg

第二步:然后进入登录页,需要手动输入验证码,并点击登陆操作

Dingtalk_20220115135435.jpg

第三步:登陆后,自动进入到抢票页面,如下图这样的

Dingtalk_20220115135621.jpg

最后:就是坐等刷票结果就好了,如下图这样,就说是刷票成功了,刷到票后,会进行短信和邮件的通知,请记得及时前往12306进行支付,不然就白抢了。

Dingtalk_20220115135729.jpg

Python运行环境:python3.7
用到的模块:re、splinter、time、sys、httplib2、urllib、smtplib、email
未安装的模块,请使用pip instatll进行安装,例如:pip install splinter
如下代码是这个脚本所有用到的模块引入:

import re
from splinter.browser import Browser
from time import sleep
import sys
import httplib2
from urllib import parse
import smtplib
from email.mime.text import MIMEText

刷票前信息准备,我主要说一下始发站和目的地的cookie值获取,因为输入城市的时候,需要通过cookie值,cookie值可以通过12306官网,然后在F12(相信所有的coder都知道这个吧)的network里面的查询请求cookie中可以看到,在请求的header里面可以找到,_jc_save_fromStation值是出发站的cookie,_jc_save_toStation的值是目的地的cookie,然后加入到代码里的城市的cookie字典city_list里即可,键是城市的首字母,值是cookie值的形式。

抢票,肯定需要先登录,我这里模拟的登录操作,会自动填充12306的账号名和密码,当然,你也可以在打开的浏览器中修改账号和密码,实现的关键代码如下:

def do_login(self):
    """登录功能实现,手动识别验证码进行登录"""
    self.driver.visit(self.login_url)
    sleep(1)
    self.driver.fill('loginUserDTO.user_name', self.user_name)
    self.driver.fill('userDTO.password', self.password)
    print('请输入验证码……')
    while True:
        if self.driver.url != self.init_my_url:
            sleep(1)
        else:
            break

登录之后,就是控制刷票的各种操作处理了,这里,我就不贴代码了,因为代码比较多,别担心,在最后,我会贴出完整的代码的。

当刷票成功后,我会进行短信和邮件的双重通知,当然,这里短信通知的平台,就看你用那个具体来修改代码了,我用的是互亿无线的体验版的免费短信通知接口;发送邮件模块我用的是smtplib,发送邮件服务器用的是163邮箱,如果用163邮箱的话,你还没有设置客户端授权密码,记得先设置客户端授权密码就好了,挺方便的。以下是主要实现代码:

说了那么多,感觉都是说了好多废话啊,哈哈,不好意思,耽误大家时间来看我瞎扯了,我贴上大家最关心的源码,请接码,大家在尝试运行过程中,有任何问题,可以给我留言或者私信我,我看到都会及时回复大家的:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
通过splinter刷12306火车票
可以自动填充账号密码,同时,在登录时,也可以修改账号密码
然后手动识别验证码,并登陆,接下来的事情,交由脚本来做了,静静的等待抢票结果就好(刷票过程中,浏览器不可关闭)
author: cuizy
time: 2018-05-30
"""

import re
from splinter.browser import Browser
from time import sleep
import sys
import httplib2
from urllib import parse
import smtplib
from email.mime.text import MIMEText

class BrushTicket(object):
    """买票类及实现方法"""

    def __init__(self, user_name, password, passengers, from_time, from_station, to_station, number, seat_type, receiver_mobile, receiver_email):
        """定义实例属性,初始化"""
        # 1206账号密码
        self.user_name = user_name
        self.password = password
        # 乘客姓名
        self.passengers = passengers
        # 起始站和终点站
        self.from_station = from_station
        self.to_station = to_station
        # 乘车日期
        self.from_time = from_time
        # 车次编号
        self.number = number.capitalize()
        # 座位类型所在td位置
        if seat_type == '商务座特等座':
            seat_type_index = 1
            seat_type_value = 9
        elif seat_type == '一等座':
            seat_type_index = 2
            seat_type_value = 'M'
        elif seat_type == '二等座':
            seat_type_index = 3
            seat_type_value = 0
        elif seat_type == '高级软卧':
            seat_type_index = 4
            seat_type_value = 6
        elif seat_type == '软卧':
            seat_type_index = 5
            seat_type_value = 4
        elif seat_type == '动卧':
            seat_type_index = 6
            seat_type_value = 'F'
        elif seat_type == '硬卧':
            seat_type_index = 7
            seat_type_value = 3
        elif seat_type == '软座':
            seat_type_index = 8
            seat_type_value = 2
        elif seat_type == '硬座':
            seat_type_index = 9
            seat_type_value = 1
        elif seat_type == '无座':
            seat_type_index = 10
            seat_type_value = 1
        elif seat_type == '其他':
            seat_type_index = 11
            seat_type_value = 1
        else:
            seat_type_index = 7
            seat_type_value = 3
        self.seat_type_index = seat_type_index
        self.seat_type_value = seat_type_value
        # 通知信息
        self.receiver_mobile = receiver_mobile
        self.receiver_email = receiver_email
        # 主要页面网址
        self.login_url = 'https://kyfw.12306.cn/otn/login/init'
        self.init_my_url = 'https://kyfw.12306.cn/otn/index/initMy12306'
        self.ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'
        # 浏览器驱动信息,驱动下载页:https://sites.google.com/a/chromium.org/chromedriver/downloads
        self.driver_name = 'chrome'
        self.executable_path = 'C:\\Users\cuizy\AppData\Local\Programs\Python\Python36\Scripts\chromedriver.exe'

    def do_login(self):
        """登录功能实现,手动识别验证码进行登录"""
        self.driver.visit(self.login_url)
        sleep(1)
        self.driver.fill('loginUserDTO.user_name', self.user_name)
        self.driver.fill('userDTO.password', self.password)
        print('请输入验证码……')
        while True:
            if self.driver.url != self.init_my_url:
                sleep(1)
            else:
                break

    def start_brush(self):
        """买票功能实现"""
        self.driver = Browser(driver_name=self.driver_name, executable_path=self.executable_path)
        # 浏览器窗口的大小
        self.driver.driver.set_window_size(900, 700)
        self.do_login()
        self.driver.visit(self.ticket_url)
        try:
            print('开始刷票……')
            # 加载车票查询信息
            self.driver.cookies.add({"_jc_save_fromStation": self.from_station})
            self.driver.cookies.add({"_jc_save_toStation": self.to_station})
            self.driver.cookies.add({"_jc_save_fromDate": self.from_time})
            self.driver.reload()
            count = 0
            while self.driver.url.split('?')[0] == self.ticket_url:
                self.driver.find_by_text('查询').click()
                sleep(1)
                count += 1
                print('第%d次点击查询……' % count)
                try:
                    car_no_location = self.driver.find_by_id("queryLeftTable")[0].find_by_text(self.number)[1]
                    current_tr = car_no_location.find_by_xpath("./../../../../..")
                    if current_tr.find_by_tag('td')[self.seat_type_index].text == '--':
                        print('无此座位类型出售,已结束当前刷票,请重新开启!')
                        sys.exit(1)
                    elif current_tr.find_by_tag('td')[self.seat_type_index].text == '无':
                        print('无票,继续尝试……')
                    else:
                        # 有票,尝试预订
                        print('刷到票了(余票数:' + str(current_tr.find_by_tag('td')[self.seat_type_index].text) + '),开始尝试预订……')
                        current_tr.find_by_css('td.no-br>a')[0].click()
                        sleep(1)
                        key_value = 1
                        for p in self.passengers:
                            # 选择用户
                            print('开始选择用户……')
                            self.driver.find_by_text(p).last.click()
                            # 选择座位类型
                            print('开始选择席别……')
                            if self.seat_type_value != 0:
                                seat_select = self.driver.find_by_id("seatType_" + str(key_value))[0]
                                seat_select.find_by_xpath("//option[@value='" + str(self.seat_type_value) + "']")[0].click()
                            key_value += 1
                            sleep(0.5)
                            if p[-1] == ')':
                                self.driver.find_by_id('dialog_xsertcj_ok').click()
                        print('正在提交订单……')
                        self.driver.find_by_id('submitOrder_id').click()
                        sleep(2)
                        # 查看放回结果是否正常
                        submit_false_info = self.driver.find_by_id('orderResultInfo_id')[0].text
                        if submit_false_info != '':
                            print(submit_false_info)
                            self.driver.find_by_id('qr_closeTranforDialog_id').click()
                            sleep(0.2)
                            self.driver.find_by_id('preStep_id').click()
                            sleep(0.3)
                            continue
                        print('正在确认订单……')
                        self.driver.find_by_id('qr_submit_id').click()
                        print('预订成功,请及时前往支付……')
                        # 发送通知信息
                        self.send_mail(self.receiver_email, '恭喜您,抢到票了,请及时前往12306支付订单!')
                        self.send_sms(self.receiver_mobile, '您的验证码是:8888。请不要把验证码泄露给其他人。')
                except Exception as error_info:
                    print(error_info)
        except Exception as error_info:
            print(error_info)

    def send_sms(self, mobile, sms_info):
        """发送手机通知短信,用的是-互亿无线-的测试短信"""
        host = "106.ihuyi.com"
        sms_send_uri = "/webservice/sms.php?method=Submit"
        account = "C59782899"
        pass_word = "19d4d9c0796532c7328e8b82e2812655"
        params = parse.urlencode(
            {'account': account, 'password': pass_word, 'content': sms_info, 'mobile': mobile, 'format': 'json'}
        )
        headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
        conn = httplib2.HTTPConnectionWithTimeout(host, port=80, timeout=30)
        conn.request("POST", sms_send_uri, params, headers)
        response = conn.getresponse()
        response_str = response.read()
        conn.close()
        return response_str

    def send_mail(self, receiver_address, content):
        """发送邮件通知"""
        # 连接邮箱服务器信息
        host = 'smtp.163.com'
        port = 25
        sender = '******@163.com'  # 你的发件邮箱号码
      '  # 不是登陆密码,是客户端授权密码
        # 发件信息
        receiver = receiver_address
        body = '<h2>温馨提醒:</h2><p>' + content + '</p>'
        msg = MIMEText(body, 'html', _charset="utf-8")
        msg['subject'] = '抢票成功通知!'
        msg['from'] = sender
        msg['to'] = receiver
        s = smtplib.SMTP(host, port)
        # 开始登陆邮箱,并发送邮件
        s.login(sender, pwd)
        s.sendmail(sender, receiver, msg.as_string())

if __name__ == '__main__':
    # 12306用户名
    user_name = input('请输入12306用户名:')
    while user_name == '':
        user_name = input('12306用户名不能为空,请重新输入:')
    # 12306登陆密码
    password = input('请输入12306登陆密码:')
    while password == '':
        password = input('12306登陆密码不能为空,请重新输入:')
    # 乘客姓名
    passengers_input = input('请输入乘车人姓名,多人用英文逗号“,”连接,(例如单人“张三”或者多人“张三,李四”):')
    passengers = passengers_input.split(",")
    while passengers_input == '' or len(passengers) > 4:
        print('乘车人最少1位,最多4位!')
        passengers_input = input('请重新输入乘车人姓名,多人用英文逗号“,”连接,(例如单人“张三”或者多人“张三,李四”):')
        passengers = passengers_input.split(",")
    # 乘车日期
    from_time = input('请输入乘车日期(例如“2018-08-08”):')
    date_pattern = re.compile(r'^\d{4}-\d{2}-\d{2}$')
    while from_time == '' or re.findall(date_pattern, from_time) == []:
        from_time = input('乘车日期不能为空或者时间格式不正确,请重新输入:')
    # 城市cookie字典
    city_list = {
        'bj': '%u5317%u4EAC%2CBJP',  # 北京
        'hd': '%u5929%u6D25%2CTJP',  # 邯郸
        'nn': '%u5357%u5B81%2CNNZ',  # 南宁
        'wh': '%u6B66%u6C49%2CWHN',  # 武汉
        'cs': '%u957F%u6C99%2CCSQ',  # 长沙
        'ty': '%u592A%u539F%2CTYV',  # 太原
        'yc': '%u8FD0%u57CE%2CYNV',  # 运城
        'gzn': '%u5E7F%u5DDE%u5357%2CIZQ',  # 广州南
        'wzn': '%u68A7%u5DDE%u5357%2CWBZ',  # 梧州南
    }
    # 出发站
    from_input = input('请输入出发站,只需要输入首字母就行(例如北京“bj”):')
    while from_input not in city_list.keys():
        from_input = input('出发站不能为空或不支持当前出发站(如有需要,请联系管理员!),请重新输入:')
    from_station = city_list[from_input]
    # 终点站
    to_input = input('请输入终点站,只需要输入首字母就行(例如北京“bj”):')
    while to_input not in city_list.keys():
        to_input = input('终点站不能为空或不支持当前终点站(如有需要,请联系管理员!),请重新输入:')
    to_station = city_list[to_input]
    # 车次编号
    number = input('请输入车次号(例如“G110”):')
    while number == '':
        number = input('车次号不能为空,请重新输入:')
    # 座位类型
    seat_type = input('请输入座位类型(例如“软卧”):')
    while seat_type == '':
        seat_type = input('座位类型不能为空,请重新输入:')
    # 抢票成功,通知该手机号码
    receiver_mobile = input('请预留一个手机号码,方便抢到票后进行通知(例如:18888888888):')
    mobile_pattern = re.compile(r'^1{1}\d{10}$')
    while receiver_mobile == '' or re.findall(mobile_pattern, receiver_mobile) == []:
        receiver_mobile = input('预留手机号码不能为空或者格式不正确,请重新输入:')
    receiver_email = input('请预留一个邮箱,方便抢到票后进行通知(例如:test@163.com):')
    while receiver_email == '':
        receiver_email = input('预留邮箱不能为空,请重新输入:')
    # 开始抢票
    ticket = BrushTicket(user_name, password, passengers, from_time, from_station, to_station, number, seat_type, receiver_mobile, receiver_email)
    ticket.start_brush()


Python3脚本抢票 一直很想尝试一下电脑跑脚本,抢票就是一个很好的例子。于是在网上找呀找,终于找到了一个可以运行的12306抢票脚本。虽然因为12306的图片验证而有些阻碍。但我觉得代码跑起来的整体体验非常好。 感谢一位博主提供的代码:https://www.cnblogs.com/lizm166/p/8191305.html 1.Chromedriver 驱动的下载地址如下: http://chromedriv... 阅读详情

相关推荐

【Python脚本】Python自动大麦网抢票,准点原价秒杀演唱会门票,拒绝黄牛交易!从我做起!!!1

你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太难过,今晚有张学友的票,后天还有张杰的票,加油哦!

weixin_45841831的博客 6万+

【Python脚本】轻松实现12306自动抢票脚本,100%成功,假期出行无忧!

不知道大家有没有之前碰到这样的情况,打算去某一个地方当你规划好了时间准备去买票的时候,你想要的那一列往往没有你想要的票了,尤其是国庆七天假和春节半月假,有时候甚至买不到规定计划时间内的票,真的是太烦躁了为此我钻研了一下,现在科技如此发达,想要实现自动化还是比较简单的Python配套案例源码、资料点击领取福利。

weixin_45841831的博客 5万+

趣味Python——如何帮女朋友快速抢票

又快到了半年一度的考试季,对于那些翻山越岭外出求学的莘莘学子们,相比于各显神通的考试,更紧张的莫过于买一张回家的车票,相信很多群最近都被下面这样的图占领了。 如今,随着12306的抗压能力越来越强,各种第三方抢票软件也是层出不穷,什么智行火车,携程旅游,就连官方都推出的了加速服务,这就导致了大量黄牛都开始感叹:这年头的生意不好做咯! 而且现在各家的抢票方式都是八仙过海,各显神通,这家让你消费买加速包,那家让你疯狂推销,以至于才出现了上述加速小程序的疯狂炸群(微信小程序恐成最大赢家)。 作为一个苦逼的学生.

chenchen5152的博客 4477

12306抢票软件 python抢票脚本

自动查询车票,并筛选指定的车次进行购票。

qq_43616689的博客 7199

【源码在文末】趣玩Python——如何帮女朋友快速抢票!

又到了半年一度的考试季,对于那些翻山越岭外出求学的莘莘学子们,相比于各显神通的考试,更紧张的莫过于买一张回家的车票,相信很多群最近都被下面这样的图占领了。如今,随着12306的抗压能力越来越强,各种第三方抢票软件也是层出不穷,什么智行火车,携程旅游,就连官方都推出的了加速服务,这就导致了大量黄牛都开始感叹:这年头的生意不好做咯!而且现在各家的抢票方式都是八仙过海,各显神通,这家让你消费买加速包,那家让你疯狂推销,以至于才出现了上述加速小程序的疯狂炸群(微信小程序恐成最大赢家)。

python03013的博客 549

通讯接口应用笔记3:使用W5500实现Modbus TCP服务器

  前面我们设计实现了W5500的驱动程序,也讲解了驱动的使用方式。在最近一次的项目应用中,正好有一个使用W5500实现TCP通讯的需求,所以我们就使用该驱动程序轻松实现。这一篇中我们就来说一说基于我们W5500通讯驱动程序实现TCP通讯的过程。 1、应用需求   在本次应用中,要求实现一个基于W5500的Modbus TCP服务器。这个需求的描述虽然只有一句话,但是这个需求的内容可不简单。我们首先来分析一下这个需求的具体内容。   为了实现基于W5500的Modbus TCP服务器,我们必先须基于W550

木南创智 5499

Python12306自动抢票下单,五一旅游回家就选Python

春运了,Python大佬分享利用Python抢票回家去游玩! 五一的前8天(4月21日至28日)火车票已预售80万张。 4月20日起,长三角地区火车票预售进入高峰期。 X新闻者从中国铁路上海局集团有限公司获悉,五一的前8天(4月21日至28日)火车票已预售80万张。,东北、西南等多个方向尚有余票,铁路部门将采取动车组重联或增开客车等方式增加热门方向运力,云贵等方向临客预计将提前开行。 ...

694

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5611

趣玩Python——如何帮女朋友快速抢票

又到了半年一度的考试季,对于那些翻山越岭外出求学的莘莘学子们,相比于各显神通的考试,更紧张的莫过于买一张回家的车票,相信很多群最近都被下面这样的图占领了。 如今,随着12306的抗压能力越来越强,各种第三方抢票软件也是层出不穷,什么智行火车,携程旅游,就连官方都推出的了加速服务,这就导致了大量黄牛都开始感叹:这年头的生意不好做咯! 而且现...

weixin_34408624的博客 455

手把手教你用野火FPGA开发板资料包安装ModelSim 10.5se(附破解教程)

本文提供了一份详细的指南,手把手教你为野火FPGA开发板安装和配置ModelSim 10.5se仿真工具。内容涵盖从前期准备、软件安装、许可证激活(学习用途)到环境验证的全过程,并简要介绍了如何与Xilinx Vivado开发套件集成,帮助初学者快速搭建稳定的FPGA仿真环境。

lstm7chronicler的博客 250

N5105核显直通PVE:从黑屏到HDMI输出的完整指南

PCI直通能让虚拟机独占物理设备,但核显直通远没有独显那么轻松。Intel核显与CPU、显示输出链路的强耦合使UEFI引导、GOP驱动、驱动签名等环节都成了黑屏陷阱。在PVE虚拟化环境中,通过IOMMU开启、vfio-pci绑定、OVMF固件和Q35机型配合,可以绕过KVM检测,让Windows虚拟机正确驱动核显,从HDMI口输出画面,并解锁Intel Quick Sync硬解能力。这种方案尤其适合N5105等低功耗迷你主机,可作为客厅HTPC、本地视频硬解或依赖硬件加速的轻量工作台。本文基于N5105平台

weixin_31082403的博客 375

如何帮女朋友快速抢到各种票!火车票,演唱会票等!

又快到了半年一度的考试季,对于那些翻山越岭外出求学的莘莘学子们,相比于各显神通的考试,更紧张的莫过于买一张回家的车票,相信很多群最近都被下面这样的图占领了。如今,随着12306的抗压能力越来越强,各种第三方抢票软件也是层出不穷,什么智行火车,携程旅游,就连官方都推出的了加速服务,这就导致了大量黄牛都开始感叹:这年头的生意不好做咯!而且现在各家的抢票方式都是八仙过海,各显神通,这家让你消费买加速包,那家让你疯狂推销,以至于才出现了上述加速小程序的疯狂炸群(微信小程序恐成最大赢家)。

libaiup的博客 714

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 215

十一回老家买不到票,最后被黄牛套路

文 |極光来源:Python 技术「ID: pythonall」今年十一国庆中秋节连续放假8天,对于我们上班族来说真是太爽了,但对于我这种没车的北漂来说,节前买回老家车票却是一件痛苦的...

weixin_48923393的博客 581

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 771

Backtrader官方中文文档:第四章Concepts基本概念

官方Concepts章节:https://backtrader.com/docu/concepts/

汇渊科技 2602

玩转python——帮你解决乡愁

前言 又到了半年一度的考试季,对于那些翻山越岭外出求学的莘莘学子们,相比于各显神通的考试,更紧张的莫过于买一张回家的车票,相信很多群最近都被下面这样的图占领了。 如今,随着12306的抗压能力越来越强,各种第三方抢票软件也是层出不穷,什么智行火车,携程旅游,就连官方都推出的了加速服务,这就导致了大量黄牛都开始感叹:这年头的生意不好做咯! 而且现在各家的抢票方式都是八仙过海,各显神通,这家让你消...

qq_39363022的博客 325

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

python实现12306自动抢票,并发短信邮件通知

脚本实现及实践 最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正。话不多说,进入正题: 入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“01”,即可免费领取!希望对你们有帮助,源码也可以领取! 这个脚本目前只能刷一趟车的,人数可以是多个,支持选取作为类型.

MC_XY的博客 5791

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

开学抢不到车票?Python自动抢票脚本,12306迅速出票!成功率高达100%!!!

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python56123的博客 4242

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GitHub 上 22 万star的第一抢票神器,3秒钟抢到!

点击上方“Github中文社区”,关注看遍Github好玩的项目 来自:量子位春节抢票正在如火如荼的进行,过年回家那肯定需要抢票,每年的抢票大战,都是一场硬战,没有一个好工具,怎么能上...

Github中文社区 1910

12306查询及抢票脚本

具体就不演示了,总之中间需要输入一下验证码,运行完之后去12306能看到一个待支付的订单,付钱就好,这边默认是二等座。

2402_88002942的博客 3087

12306抢票脚本

12306抢票脚本(python实现) 1、正常在官网买票,流程大概如下:查票-登录-下单-通知 2、那么脚本要怎么实现?首先是监控余票,循环遍历余票接口,直到有票,开始购票,然后检测购票结果,如果成功,通知用户去付款,如果失败,循环以上过程,这就是自动抢票的大体思路。这里会有一个问题,12306购票接口会校验用户是否登录,如果未登录状态,购票会失败;所以需要增加一个逻辑,下单前检测用户是否处...

CoberOJ_的博客 3万+
上一篇: 如何去学Python量化,如何快速入门?
下一篇: 如何使用python实现自动化办公?全网最全干货来了!_python办公自动化
黑客老许
博客等级 码龄8年 6153粉丝 1028原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值