iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python:基于Python爬虫技术的抢票程序及其实现
  • 807
分享到

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

python爬虫开发语言测试工具学习 2023-09-01 11:09:41 807人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

临近放假,相信我们每天都在群聊里或者朋友圈看到一些帮忙抢火车票的信息。看到朋友们抢回家的车票这么辛(bei)苦(can),结合圈里一些前辈的指点,抱着学习的心态用python做了一个简单的自动化抢票程

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

版本号 Python 3.6.5

编译器 PyCharm PRO 2018.1

浏览器 Google Chrome 71.0.3

在这里插入图片描述

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

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

这个命令来安装。

然后,开始使劲地码:

在这里插入图片描述

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

class Buy_Tickets(object):# 定义实例属性,初始化def __init__(self, username, passwd, order, passengers, dtime, starts, ends):self.username = usernameself.passwd = passwdself.order = order # 车次,0代表所有车次self.passengers = passengers # 乘客名self.starts = starts # 起始地和终点self.ends = endsself.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 = 0if self.order != 0:while self.driver.url == self.ticket_url:self.driver.find_by_text('查询').click()count += 1print('第%d次点击查询...' % count)try:self.driver.find_by_text('预订')[self.order - 1].click()sleep(1.5)except Exception as e:print(e)print('预订失败...')continue

在这里插入图片描述

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) # 邮箱的传输协议,端口默认25s.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 += 1print('第%d次点击查询...' % count)try:for i in self.driver.find_by_text('预订'):i.click()sleep(1)except Exception as e:print(e)print('预订失败...')continueprint('开始预订...')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全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

来源地址:https://blog.csdn.net/Yuki1127918/article/details/129879707

--结束END--

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

本文链接: https://www.lsjlt.com/news/388207.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作