Python:基于Python爬虫技术的抢票程序及其实现

这篇具有很好参考价值的文章主要介绍了Python:基于Python爬虫技术的抢票程序及其实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

临近放假,相信我们每天都在群聊里或者朋友圈看到一些帮忙抢火车票的信息。看到朋友们抢回家的车票这么辛(bei)苦(can),结合圈里一些前辈的指点,抱着学习的心态用Python做了一个简单的自动化抢票程序,抢到票之后通过绑定的邮箱(比如QQ)发通知。下面分享主要内容:

版本号 Python 3.6.5

编译器 PyCharm PRO 2018.1

浏览器 Google Chrome 71.0.3

Python:基于Python爬虫技术的抢票程序及其实现

首先,我们用到一个Splinter库:

相信做自动化测试、自动化爬虫的朋友都知道Selenium工具,它可以把人为驱动行为转化为机器执行,Splinter的药效跟它是一样的。我们可以进去cmd后用 pip install splinter

这个命令来安装。

然后,开始使劲地码:

Python:基于Python爬虫技术的抢票程序及其实现

1. 定义自动购票的类(初始化属性)

class Buy_Tickets(object):

# 定义实例属性,初始化

def __init__(self, username, passwd, order, passengers, dtime, starts, ends):

self.username = username

self.passwd = passwd

self.order = order # 车次,0代表所有车次

self.passengers = passengers # 乘客名

self.starts = starts # 起始地和终点

self.ends = ends

self.dtime = dtime # 日期

self.login_url = 'https://kyfw.12306.cn/otn/login/init'

self.initMy_url = 'https://kyfw.12306.cn/otn/view/index.html'

self.ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'

self.driver_name = 'chrome'

self.executable_path = 'C:\python\chromedriver.exe'

2. 实现登录功能

def login(self):

self.driver.visit(self.login_url)

self.driver.fill('loginUserDTO.user_name', self.username)

# sleep(1)

self.driver.fill('userDTO.password', self.passwd)

# sleep(1)

print('请输入验证码...')

while True:

if self.driver.url != self.initMy_url:

sleep(1)

else:

break

3. 实现购票功能

def start_buy(self):

self.driver = Browser(driver_name=self.driver_name, executable_path=self.executable_path)

# 窗口大小的操作

self.driver.driver.set_window_size(1200, 700)

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_by_text('查询').click()

count += 1

print('第%d次点击查询...' % count)

try:

self.driver.find_by_text('预订')[self.order - 1].click()

sleep(1.5)

except Exception as e:

print(e)

print('预订失败...')

continue

Python:基于Python爬虫技术的抢票程序及其实现

4. 邮箱通知付款

def sendMail(self, mail_title, mail_content):

my_sender = 'xxx@qq.com' # 发件人邮箱账号

my_user = 'xxxx@qq.com' # 收件人邮箱账号

try:

'''发送邮件'''

msg = MIMEText(mail_content, "plain", 'utf-8') # 发送邮件内容

msg["Subject"] = Header(mail_title, 'utf-8') # 发送邮件主题/标题

msg["From"] = formataddr(['Bruce pk', my_sender]) # 邮件发送方

msg["To"] = formataddr(['brucepk', my_user]) # 邮件接收方

s = smtplib.SMTP("smtp.qq.com", 25) # 邮箱的传输协议,端口默认25

s.login(my_sender, 'xxxxx') # 登录邮箱,这里的第二个参数为qq邮箱授权码,不要填你的登录密码

s.sendmail(my_sender, [my_user, ], msg.as_string()) # 发送方,接收方,发送消息

s.quit() # 退出邮箱

print("抢票通知邮件发送成功!")

except Exception:

print("邮件发送失败~~")

还有,网络不好或者12306的服务器不稳定的时候,就会卡住,针对这种情况,系统会重复查询:

else:

while self.driver.url == self.ticket_url:

self.driver.find_by_text('查询').click()

count += 1

print('第%d次点击查询...' % count)

try:

for i in self.driver.find_by_text('预订'):

i.click()

sleep(1)

except Exception as e:

print(e)

print('预订失败...')

continue

print('开始预订...')

sleep(1)

print('开始选择用户...')

for p in self.passengers:

self.driver.find_by_text(p).last.click()

sleep(0.5)

if p[-1] == ')':

self.driver.find_by_id('dialog_xsertcj_ok').click()

sleep(3)

print('提交订单...')

self.driver.find_by_id('submitOrder_id').click()

sleep(5)

print('确认选座...')

self.driver.find_by_id('qr_submit_id').click()

print('预订成功...')

sleep(5)

self.sendMail(mail_title, mail_content)

except Exception as e:

print(e)

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

Python:基于Python爬虫技术的抢票程序及其实现

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

Python:基于Python爬虫技术的抢票程序及其实现

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

Python:基于Python爬虫技术的抢票程序及其实现

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

Python:基于Python爬虫技术的抢票程序及其实现

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

Python:基于Python爬虫技术的抢票程序及其实现
Python:基于Python爬虫技术的抢票程序及其实现

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python:基于Python爬虫技术的抢票程序及其实现文章来源地址https://www.toymoban.com/news/detail-428085.html

到了这里,关于Python:基于Python爬虫技术的抢票程序及其实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫(三)12306自动抢票--- selenium

    一、 二 、 python爬虫入门篇 https://blog.csdn.net/weixin_64050468/article/details/130583771?spm=1001.2014.3001.5501 文章目录 前言 一、按照selenuim模块+配置+可能报错解释 二、selenium部分代码解读  三、开始操作 抢票代码 爬取数据代码 后面文章主打用爬虫整活了 边学边玩 win + r 打开cmd 然后输入

    2024年02月08日
    浏览(34)
  • 基于python爬虫技术的岗位招聘信息采集系统的设计与实现(Django框架)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月02日
    浏览(25)
  • 基于华为商城的抢单工具python3.9的selenium webdriver使用及打包

    本文基于华为商城的抢单工具,讲解一下python3.9的selenium webdriver使用,网上也有相关的资料,但在自己动手做的过程中还是遇到了一些波折,想拿出来跟大家一起分享。开篇先放个图: 主要从三个大方面说明:开发环境搭建、工程打包、过程中所遇问题整理 话不多说,从头

    2024年04月09日
    浏览(57)
  • Python制作【大麦网】自动抢票程序_python大麦抢票

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年04月12日
    浏览(23)
  • Python制作【大麦网】自动抢票程序

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年02月04日
    浏览(35)
  • 使用Python编写一个多线程的12306抢票程序

    国庆长假即将到来,大家纷纷计划着自己的旅行行程。然而,对于很多人来说,抢购火车票人们成了一个令人头疼的问题。12306网站的服务器经常因为流量高而崩溃,导致抢票变得越来越严重异常困难。 首先,让我们来了解一下12306抢票的难点。由于很多人都在同一时间段内

    2024年02月07日
    浏览(44)
  • python+selenium实现12306抢票

    1、要先下载相关的包,selenium、interval。最好使用国内清华源 2、还要下载对应浏览器的驱动: 2.1 安装chromedriver 谷歌浏览器驱动的网址为link 注意:谷歌浏览器的驱动版本要匹配谷歌浏览器的版本 随机点击一个版本: 点击notes.txt 2.2 安装FireFox驱动(我用的是这个) 火狐驱动

    2024年02月01日
    浏览(35)
  • Python 实现12306抢票脚本

    我必须再次强调,使用或创建12306抢票脚本可能违反了12306网站的使用条款和条件,以及相关法律法规。因此,我不能提供任何关于如何编写或使用抢票脚本的具体代码或指导。 不过,我可以向您展示如何使用Python编写一个基本的网络爬虫来自动查询和预订火车票的基本步骤

    2024年04月27日
    浏览(20)
  • 基于Python和Selenium的大麦网自动抢票脚本

    自动化抢票的脚本,需通过Selenium库来实现自动化操作。(学习参考) 优化后的完整代码: 需要注意的: 我用了 with 语句保证浏览器实例在函数结束后正确关闭。 我用了几个 try-except 块处理在各个步骤可能出现的异常,它可以在异常的时候打印出错误的信息。 我把大部分代

    2024年02月11日
    浏览(30)
  • 基于MATLAB实现CAD技术及其应用完整教程(附上完整源码+数据+使用说明)

    MATLAB是一种功能强大的计算机辅助设计(CAD)工具,它为工程师和设计师提供了一种高效、灵活的方式来创建、分析和优化各种设计。在本文中,我们将介绍MATLAB如何实现CAD技术,并探讨其在不同领域中的应用。 首先,MATLAB提供了一套丰富的工具箱,包括图形用户界面(GU

    2024年02月15日
    浏览(114)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包