抢火车票的Python代码横空出世了

[复制链接]
 楼主| gaoyang9992006 发表于 2015-12-10 19:57 | 显示全部楼层 |阅读模式
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: Akagi201
  4. """

  5. from splinter.browser import Browser
  6. from time import sleep
  7. import traceback

  8. ###容错做的不好,考虑的情况也不够多,大家见谅

  9. # 用户名,密码
  10. username = u"改成用户名"
  11. passwd = u"改成用户名"
  12. # cookies值得自己去找, 下面两个分别是上海, 营口东
  13. starts = u"%u4E0A%u6D77%2CSHH"
  14. ends = u"%u8425%u53E3%u4E1C%2CYGT"
  15. # 时间格式2016-01-31
  16. dtime = u"2016-02-01"
  17. # 车次,选择第几趟,0则从上之下依次点击
  18. order = 0
  19. ###乘客名
  20. pa = u"改成乘客姓名"

  21. """网址"""
  22. ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
  23. login_url = "https://kyfw.12306.cn/otn/login/init"
  24. initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"


  25. def login():
  26.     b.find_by_text(u"登录").click()
  27.     sleep(3)
  28.     b.fill("loginUserDTO.user_name", username)
  29.     sleep(1)
  30.     b.fill("userDTO.password", passwd)
  31.     sleep(1)
  32.     print u"等待验证码,自行输入..."
  33.     while True:
  34.         if b.url != initmy_url:
  35.             sleep(1)
  36.         else:
  37.             break

  38. def huoche():
  39.     global b
  40.     b = Browser(driver_name="chrome")
  41.     b.visit(ticket_url)

  42.     while b.is_text_present(u"登录"):
  43.         sleep(1)
  44.         login()
  45.         if b.url == initmy_url:
  46.             break

  47.     try:
  48.         print u"购票页面..."
  49.         # 跳回购票页面
  50.         b.visit(ticket_url)

  51.         # 加载查询信息
  52.         b.cookies.add({"_jc_save_fromStation": starts})
  53.         b.cookies.add({"_jc_save_toStation": ends})
  54.         b.cookies.add({"_jc_save_fromDate": dtime})
  55.         b.reload()

  56.         sleep(2)

  57.         count = 0
  58.         # 循环点击预订
  59.         if order != 0:
  60.             while b.url == ticket_url:
  61.                 b.find_by_text(u"查询").click()
  62.                 count +=1
  63.                 print u"循环点击查询... 第 %s 次" % count
  64.                 sleep(1)
  65.                 try:
  66.                     b.find_by_text(u"预订")[order - 1].click()
  67.                 except:
  68.                     print u"还没开始预订"
  69.                     continue
  70.         else:
  71.             while b.url == ticket_url:
  72.                 b.find_by_text(u"查询").click()
  73.                 count += 1
  74.                 print u"循环点击查询... 第 %s 次" % count
  75.                 sleep(1)
  76.                 try:
  77.                     for i in b.find_by_text(u"预订"):
  78.                         i.click()
  79.                 except:
  80.                     print u"还没开始预订"
  81.                     continue
  82.         sleep(1)
  83.         b.find_by_text(pa)[1].click()
  84.         print  u"能做的都做了.....不再对浏览器进行任何操作"
  85.     except Exception as e:
  86.         print(traceback.print_exc())

  87. if __name__ == "__main__":
  88.     huoche()


ternenceliu 发表于 2016-3-30 17:23 | 显示全部楼层
怎么使用?楼主用过吗?
 楼主| gaoyang9992006 发表于 2016-3-31 10:33 | 显示全部楼层
ternenceliu 发表于 2016-3-30 17:23
怎么使用?楼主用过吗?

用过一次,不知道现在还能用不。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16350

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部