亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python+Splinter實現12306搶票功能

2020-02-15 23:02:57
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python實現12306搶票功能的具體代碼,供大家參考,具體內容如下

源碼記錄如下:

#!/usr/bin/env python# _*_ coding:utf-8 _*_#!/usr/bin/env python# _*_ coding:utf-8 _*_from splinter.browser import Browserfrom time import sleepimport os# from selenium.webdriver.chrome.options import Optionsimport loggingfrom log_class import Logger # 需要一個logger庫import sysreload(sys)sys.setdefaultencoding('utf-8') # 防止由于Unicode編碼與ASCII編碼的不兼容造成錯誤class BuyTicket(object):  def __init__(self, username, passwd, order, passengers, seatType, ticketType, daytime, starts, ends):    # 用戶名 密碼    self.username = username    self.passwd = passwd    # 車次,選擇第幾趟,0則從上之下依次點擊    self.order = order    # 乘客名    self.passengers = passengers    # 席位    self.seatType = seatType    self.ticketType = ticketType    # 時間格式2018-02-05    self.daytime = daytime    # 起始地和終點    self.starts = starts    self.ends = ends    self.login_url = 'https://kyfw.12306.cn/otn/login/init'    self.initMy_url = 'https://kyfw.12306.cn/otn/index/initMy12306'    self.ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'    # 瀏覽器名稱    self.driver_name = 'firefox' # chrome firefox    # 火狐瀏覽器第三方驅動    self.executable_path = os.getcwd()+'/geckodriver' # 獲取工程目錄下的火狐驅動 chromedriver  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)    logbticket.info("請手動輸入驗證碼...")    # print('請手動輸入驗證碼...') # 目前沒有自動驗證碼    # 循環等待登錄,登錄成功,跳出循環    while True:      if self.driver.url != self.initMy_url:        sleep(1)      else:        break  def start_buy(self):    # 這些設置都是必要的    # chrome_options = Options()    # chrome_options.add_argument("--no-sandbox")    # chrome_options.add_argument("--disable-setuid-sandbox")    # chrome_options.add_argument("disable-infobars") # 禁用網頁上部的提示欄    # self.driver = Browser(driver_name=self.driver_name, options=chrome_options, executable_path=self.executable_path)    self.driver = Browser(driver_name=self.driver_name,               executable_path=self.executable_path)    # 設置窗口大小尺寸    self.driver.driver.set_window_size(1400, 1000)    # 用戶登錄    self.login()    # 進入選票網站    self.driver.visit(self.ticket_url)    try:      logbticket.info("購票頁面開始....")      # print("購票頁面開始....")      # sleep(1)      # 加載查詢信息      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.daytime})      self.driver.reload()      count = 0      if self.order != 0:        while self.driver.url == self.ticket_url:          self.driver.find_by_text("查詢").click()          count = count+1          logbticket.info("第 %d 次點擊查詢..." % count)          # print("第 %d 次點擊查詢..." % count)          # sleep(1)          try:            self.driver.find_by_text("預訂")[self.order - 1].click() # 點擊第幾個“預訂”            sleep(1.5)          except Exception as e: # e是Exception 的一個instance            # print(e)            # print("預訂失敗...")            logbticket.error(e)            logbticket.error("預訂失敗...")            continue      else:        while self.driver.url == self.ticket_url:          self.driver.find_by_text("查詢").click()          count += 1          logbticket.info("第 %d 次點擊查詢..." % count)          # print("第 %d 次點擊查詢..." % count)          try:            for i in self.driver.find_by_text("預訂"):              i.click()              sleep(1)          except Exception as e:            # print(e)            # print("預訂失敗...")            logbticket.error(e)            logbticket.error("預訂失敗...")            continue      # print("開始預訂....")      logbticket.info("開始預訂....")      # sleep(1)      # self.driver.reload()      sleep(1)      # print("開始選擇用戶....")      logbticket.info("開始選擇用戶....")      for p in self.passengers:        pg = self.driver.find_by_text(p) # .last.click()        pg.last.click()      # print("提交訂單....")      logbticket.info("提交訂單....")      sleep(1)      i = 0      while len(self.passengers) > 0:        i = i + 1        seat_id_string = "seatType_" + str(i)        ticket_id_string = "ticketType_" + str(i)        self.driver.find_by_xpath('//select[@id="%s"]/option[@value="%s"]'                     % (seat_id_string, self.seatType)).first._element.click()        self.driver.find_by_xpath('//select[@id="%s"]//option[@value="%s"]'                     % (ticket_id_string, self.ticketType)).first._element.click()        # self.driver.select("confirmTicketType", "3")        self.passengers.pop()        sleep(1)      self.driver.find_by_id("submitOrder_id").click()      # print("開始選座...")      logbticket.info("開始選座...")      sleep(1.5)      # print("確認選座....")      logbticket.info("確認選座....")      self.driver.find_by_text("qr_submit_id").click()    except Exception as e:      # print(e)      logbticket.error(e)city = {"深圳": "%u6DF1%u5733%2CSZQ",    "武漢": "%u6B66%u6C49%2CWHN",    "隨州": "%u968F%u5DDE%2CSZN"}seatT = {"硬臥": "3",     "軟臥": "4",     "硬座": "1",     "二等座": "O",     "一等座": "M",     "商務座": "9"}if __name__ == '__main__':  # 用戶名  username = "xxxxxxxx"  # 密碼  password = "xxxxxx"  # 車次選擇,0代表所有車次  order = 13  # 乘客名,比如passengers = ['丁小紅', '丁小明']  passengers = ["xxx", "xxx"]  # 日期,格式為:'2018-01-20'  daytime = "2018-04-05"  # 出發地(需填寫cookie值)  starts = city["xx"] # 武漢  # 目的地(需填寫cookie值)  ends = city["xx"] # 北京  # 席別  seatType = seatT["二等座"] # 二等座  # 票種  ticketType = "1" # 成人票  logbticket = Logger("bticket.log", logging.DEBUG, logging.ERROR)  BuyTicket(username, password, order, passengers, seatType, ticketType, daytime, starts, ends).start_buy()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩高清在线观看| 欧美性生交大片免网| 国产精品你懂得| 国内精品久久久久影院 日本资源| 欧美国产日韩一区二区在线观看| 欧美精品激情在线观看| 日本aⅴ大伊香蕉精品视频| 亚洲2020天天堂在线观看| 欧美色另类天堂2015| 亚洲免费一在线| 亚洲美女精品成人在线视频| 国产精品9999| 国产欧美日韩中文字幕| 国产在线观看91精品一区| 欧美性xxxx极品hd满灌| 国产亚洲欧美日韩美女| 亚洲国产精品成人va在线观看| 久久99国产精品久久久久久久久| 日韩精品在线播放| 亚洲欧美精品在线| 亚洲综合第一页| 欧美日韩国产一中文字不卡| 日韩精品久久久久久久玫瑰园| 九九久久久久久久久激情| 久热国产精品视频| 亚洲新中文字幕| 欧美裸体视频网站| 欧美另类极品videosbest最新版本| 国产视频久久久久久久| 国产视频精品在线| 日韩在线视频线视频免费网站| 国模吧一区二区三区| 欧美不卡视频一区发布| 亚洲一区二区三区毛片| 91社影院在线观看| 亚洲一区国产精品| 亚洲人成人99网站| 91色琪琪电影亚洲精品久久| 久久91亚洲精品中文字幕| 亚洲成人精品在线| 中文精品99久久国产香蕉| 日韩av男人的天堂| 性色av一区二区三区免费| 91免费的视频在线播放| 国产成人精品午夜| 欧美另类99xxxxx| 热草久综合在线| 国产成人精品一区二区| 欧美国产精品日韩| 国内伊人久久久久久网站视频| 91精品久久久久久综合乱菊| 7777kkkk成人观看| 日韩在线播放视频| 日韩高清有码在线| 亚洲精品久久久久久久久| 久久综合伊人77777蜜臀| 国产精品高清在线观看| 日本91av在线播放| 欧美野外wwwxxx| 成人妇女免费播放久久久| 亚洲无限乱码一二三四麻| 97久久精品视频| 91色琪琪电影亚洲精品久久| 成人中文字幕+乱码+中文字幕| 在线日韩av观看| 97国产精品视频人人做人人爱| 亚洲丁香婷深爱综合| 韩国视频理论视频久久| 庆余年2免费日韩剧观看大牛| 国产日韩在线一区| 国产中文字幕91| 日本精品久久中文字幕佐佐木| 热re99久久精品国产66热| 国产精品27p| 国产69精品99久久久久久宅男| 国产精品久久久久久久久久免费| 欧美日本啪啪无遮挡网站| 一本一本久久a久久精品综合小说| 7m第一福利500精品视频| 日日噜噜噜夜夜爽亚洲精品| 欧美精品免费在线观看| 91美女片黄在线观看游戏| 色狠狠久久aa北条麻妃| 欧美大片在线免费观看| 日韩电影中文 亚洲精品乱码| 亚洲国内精品视频| 国产精品视频导航| 国产丝袜视频一区| 68精品国产免费久久久久久婷婷| 亚洲aa在线观看| 亚洲91av视频| 国产午夜精品免费一区二区三区| 国产综合久久久久| 日韩欧美精品网址| 国产精品入口尤物| 中文字幕精品久久| 国产精品女主播| 国产成人自拍视频在线观看| 91精品国产综合久久香蕉922| 亚洲精品国精品久久99热| 亚洲美女免费精品视频在线观看| 韩国19禁主播vip福利视频| 亚洲第一福利网站| 亚洲日韩第一页| 欧美日韩免费在线观看| 亚洲国产小视频| 亚洲福利视频免费观看| 中国china体内裑精亚洲片| 永久免费看mv网站入口亚洲| 在线日韩av观看| 亚洲精品一区av在线播放| 91九色精品视频| 亚洲高清久久久久久| 91爱视频在线| 久久免费高清视频| 久久福利视频导航| 欧美色视频日本版| 欧美专区在线观看| 久久五月天综合| 久国内精品在线| 国产福利视频一区| 精品色蜜蜜精品视频在线观看| 日韩欧美在线观看| 黄色成人在线免费| 久久精品国产精品| www.精品av.com| 九九综合九九综合| 亚洲精品在线视频| 日韩免费观看高清| 午夜美女久久久久爽久久| 在线精品国产成人综合| 欧美激情性做爰免费视频| 久久久免费观看| 综合久久五月天| 宅男66日本亚洲欧美视频| 亚洲嫩模很污视频| 在线播放日韩精品| 日韩在线视频二区| 欧美日韩激情视频8区| 国产美女精品视频免费观看| 欧美福利在线观看| 欧美不卡视频一区发布| 欧美裸体视频网站| 日韩av色在线| 亚洲男人天堂视频| 色综合天天狠天天透天天伊人| 久久人人爽人人| 亚洲精品久久久久久久久久久| 国内外成人免费激情在线视频| 精品成人在线视频| 欧美精品在线播放| 最近2019中文字幕在线高清| 精品免费在线视频| 亚洲2020天天堂在线观看| 红桃视频成人在线观看| 奇门遁甲1982国语版免费观看高清| 成人激情av在线| 岛国视频午夜一区免费在线观看| 国产精品视频一区二区高潮| 日韩高清电影免费观看完整版| 91欧美精品午夜性色福利在线| 亚洲天堂男人天堂女人天堂| 亚洲a区在线视频| 亚洲情综合五月天|