标签:开始 nbsp pass python库 auth .com try present stat
马上端午节放假,又是抢票的时间,利用Python程序实现自动抢票。
Splinter是一个自动化测试网络应用的Python库。有了Splinter,就可以将打开浏览器、输入URL、填写表单、点击按钮等全部操作自动化。因此,我们需要引入这个库。通过pip install splinter来安装。
1 # -*- coding:utf-8 -*- 2 """ 3 @author: Wang Linjie 4 """ 5 6 from splinter.browser import Browser 7 from time import sleep 8 import traceback 9 10 11 12 # 用户名,密码 13 username = u"用户名" 14 passwd = u"密码" 15 # cookies值得自己去找, 下面两个分别是北京,安阳 16 starts = u"%u5317%u4EAC%2CBJP" 17 ends = u"%u5B89%u9633%2CAYF" 18 # 时间格式2016-01-31 19 dtime = u"2018-06-15" 20 # 车次,选择第几趟,0则从上之下依次点击 21 order = 0 22 ###乘客名 23 pa = u"王琳杰" 24 25 """网址""" 26 ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init" 27 login_url = "https://kyfw.12306.cn/otn/login/init" 28 initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306" 29 30 31 def login(): 32 b.find_by_text(u"登录").click() 33 sleep(3) 34 b.fill("loginUserDTO.user_name", username) 35 sleep(1) 36 b.fill("userDTO.password", passwd) 37 sleep(1) 38 print u"等待验证码,自行输入..." 39 while True: 40 if b.url != initmy_url: 41 sleep(1) 42 else: 43 break 44 45 def huoche(): 46 global b 47 b = Browser(driver_name="chrome") 48 b.visit(ticket_url) 49 50 while b.is_text_present(u"登录"): 51 sleep(1) 52 login() 53 if b.url == initmy_url: 54 break 55 56 try: 57 print u"购票页面..." 58 # 跳回购票页面 59 b.visit(ticket_url) 60 61 # 加载查询信息 62 b.cookies.add({"_jc_save_fromStation": starts}) 63 b.cookies.add({"_jc_save_toStation": ends}) 64 b.cookies.add({"_jc_save_fromDate": dtime}) 65 b.reload() 66 67 sleep(2) 68 69 count = 0 70 # 循环点击预订 71 if order != 0: 72 while b.url == ticket_url: 73 b.find_by_text(u"查询").click() 74 count +=1 75 print u"循环点击查询... 第 %s 次" % count 76 sleep(1) 77 try: 78 b.find_by_text(u"预订")[order - 1].click() 79 except: 80 print u"还没开始预订" 81 continue 82 else: 83 while b.url == ticket_url: 84 b.find_by_text(u"查询").click() 85 count += 1 86 print u"循环点击查询... 第 %s 次" % count 87 sleep(1) 88 try: 89 for i in b.find_by_text(u"预订"): 90 i.click() 91 except: 92 print u"还没开始预订" 93 continue 94 sleep(1) 95 b.find_by_text(pa)[1].click() 96 print u"能做的都做了.....不再对浏览器进行任何操作" 97 except Exception as e: 98 print(traceback.print_exc()) 99 100 if __name__ == "__main__": 101 huoche()
小技巧:
如何在chrome中获得起始站和终点站等的cookie值?
先登录一下12306,输入地点日期什么的查询一下,然后在chrome浏览器中按F12,出现如下页面,在resource选项里找到相应的值。
对应表格中的cookie值:
_jc_save_fromeStation的值为出发地
_jc_save_toSatation的值为目的地
_jc_save_fromDate 出发日期
_jc_save_toDate返程日期
标签:开始 nbsp pass python库 auth .com try present stat
原文地址:https://www.cnblogs.com/wanglinjie/p/9180452.html