博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3.x:抢票
阅读量:4357 次
发布时间:2019-06-07

本文共 3497 字,大约阅读时间需要 11 分钟。

Python3.x:抢票

一个妹子叫我帮她买动车票,结果竟然没买到票;好吧,不好意思说买不到票,写个抢票程序来完成吧;

1,Chromediver安装:

因为需要chrome支持页面测试,所以需要安装chromedriver。安装过程很简单(实际上不需要安装),注意下版本,有些低版本是不支持高版本的chrome的。镜像链接:。直接把chromedriver.exe扔在在C/windows/system32/文件夹下的,这样就不需要配置环境变量了。

注意:chromedriver要跟chrome匹配;

2,Splinter模块安装:

Splinter是一个自动化测试网络应用的Python库。有了Splinter,就可以将打开浏览器、输入URL、填写表单、点击按钮等全部操作自动化。

通过pip install splinter来安装。

3,自动抢票,就是把每个操作步骤用代码实现;代码如下:

#python3.xfrom splinter.browser import Browserfrom time import sleep# traceback模块被用来跟踪异常返回信息import traceback# 设定用户名、密码username = u"用户名"passwd = u"密码"# 起始站点和乘车时间的cookies值要去找;# 方法:先登录一下12306,输入地点日期什么的查询一下,然后在chrome浏览器中按F12,出现如下页面,在Application选项里找到相应的值。# 表格中的cookie值:#_jc_save_fromeStation的值为出发地#_jc_save_toSatation的值为目的地#_jc_save_fromDate 出发日期#_jc_save_toDate返程日期# 实例中用的是:福州 到 厦门北 2018-01-13from_station = u"%u798F%u5DDE%2CFZS"to_station = u"%u53A6%u95E8%u5317%2CXKS"# 时间格式2018-01-25from_date = u"2018-01-13"# 车次,选择第几趟,0则从上之下依次点击order = 0# 设定乘客姓名ticketer = u"乘客姓名"# 设定网址ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"login_url = "https://kyfw.12306.cn/otn/login/init"initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"# 登录网站def login():    #点击当前页面的"登录"    bwr.find_by_text(u"登录").click()    sleep(3)    #fill填充搜索框的内容,username。name=loginUserDTO.user_name的元素。    bwr.fill("loginUserDTO.user_name", username)    sleep(1)    bwr.fill("userDTO.password", passwd)    sleep(1)    print(u"等待验证码,自行输入...")    #登录手动输入验证码,并登录系统    while True:        #判断当前的url是否已经进入系统        if bwr.url != initmy_url:            sleep(1)        else:            break# 购票def getTickt():    global bwr    # 使用splinter打开chrome浏览器    bwr=Browser(driver_name="chrome")    # splinter打开浏览器(返回购票页面)    bwr.visit(ticket_url)    while bwr.is_text_present(u"登录"):        sleep(1)        login()        #判断是否已经进入系统        if bwr.url == initmy_url:            break    try:        print(u"购票页面...")        # splinter打开浏览器(跳回购票页面)        bwr.visit(ticket_url)        # 加载查询信息        bwr.cookies.add({
"_jc_save_fromStation": from_station}) bwr.cookies.add({
"_jc_save_toStation": to_station}) bwr.cookies.add({
"_jc_save_fromDate": from_date}) bwr.reload() sleep(2) count=0 # 循环点击预订 if order != 0: while bwr.url == ticket_url: bwr.find_by_text(u"查询").click() count += 1 print(u"循环点击查询... 第 %s 次" % count) sleep(1) try: bwr.find_by_text(u"预订")[order - 1].click() except: print(u"还没开始预订") continue else: while bwr.url == ticket_url: bwr.find_by_text(u"查询").click() count += 1 print(u"循环点击查询... 第 %s 次" % count) sleep(1) try: for i in bwr.find_by_text(u"预订"): i.click() sleep(1) except: print(u"还没开始预订") continue sleep(1) # 可以通过修改sleep的参数来调整延时, 但延时不要太低, 防止被12306网站认为是刷票屏蔽掉. bwr.find_by_text(ticketer)[0].click() sleep(1) bwr.find_by_text(u"提交订单").click() sleep(1) #bwr.find_by_id(u"qr_submit_id").click() print(u"成功抢到一张宝贵的票") except Exception as e: print(traceback.print_exc())if __name__ == "__main__": getTickt()

 

作者:整合侠

链接:
来源:博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

转载于:https://www.cnblogs.com/lizm166/p/8191305.html

你可能感兴趣的文章
C-关键字(二)
查看>>
排序笔记
查看>>
下载360doc.com里的文章
查看>>
【转】globk和glorg中使用的apr文件
查看>>
一款纯css3实现的机器人看书动画效果
查看>>
加班与效率
查看>>
轻量级Modal模态框插件cta.js
查看>>
MyEclipse下SpringBoot+JSP整合过程及踩坑
查看>>
重定向和管道
查看>>
实验五
查看>>
STL学习笔记(第二章 C++及其标准程序库简介)
查看>>
Operator_countByValue
查看>>
Java 日期往后推迟n天
查看>>
Web应用漏洞评估工具Paros
查看>>
Git 和 Github 使用指南
查看>>
20180925-4 单元测试
查看>>
mysql的数据存储
查看>>
[转载] Activiti Tenant Id 字段释疑
查看>>
[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
查看>>
SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能
查看>>