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

首頁 > 編程 > Python > 正文

python+selenium實現自動搶票功能實例代碼

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

簡介

什么是Selenium?

Selenium是ThoughtWorks公司的一個強大的開源Web功能測試工具系列,采用Javascript來管理整個測試過程,包括讀入測試套件、執行測試和記錄測試結果。它采用Javascript單元測試工具JSUnit為核心,模擬真實用戶操作,包括瀏覽頁面、點擊鏈接、輸入文字、提交表單、觸發鼠標事件等等,并且能夠對頁面結果進行種種驗證。也就是說,只要在測試用例中把預期的用戶行為與結果都描述出來,我們就得到了一個可以自動化運行的功能測試套件。(Selenium的核心是Javascript寫的,他和瀏覽器進行通信,把測試用例的信息發送給瀏覽器執行,從而達到自動化測試的目的。)

使用說明

程序運行開始,需要輸入出發地,目的地,出發時間,乘客信息,車次;乘客信息和車次可以輸入多個
剛剛開始學習爬蟲,selenium僅僅是解放了雙手,運行效率不是很高;
程序運行時會打開chrome瀏覽器,因為使用的是chrome的瀏覽器驅動;

相關文檔

https://selenium-python.readthedocs.io/installation.html#introduction

代碼示例

# encoding: utf-8from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import Byimport timeclass Qiangpiao(object):  def __init__(self):    driver_path = "E:/py_pachong/chromedriver.exe"    # 瀏覽器驅動    self.drive = webdriver.Chrome(executable_path=driver_path)    # 登陸鏈接    self.login_url = "https://kyfw.12306.cn/otn/login/init"    # 登陸后的鏈接    self.initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"    # 查詢頁面    self.search_url = "https://kyfw.12306.cn/otn/leftTicket/init"    # 乘車人頁面    self.passenger_url = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"  def wait_input(self):    """    主要用于頁面審核;    當輸入出發地,目的地,乘車時間后,會自動出發查詢submit    :return:    """    self.from_station = input("出發地:")    self.to_station = input("目的地:")    self.depart_time = input("出發時間:")    self.passengers = input("乘客姓名:").split(",")    self.trains = input("車次:").split(",")  def _login(self):    """    登陸驗證,登陸成功后會跳轉到 self.initmy_url    :return:    """    self.drive.get(self.login_url)    WebDriverWait(self.drive, 1000).until(      EC.url_to_be(self.initmy_url)    )    print('登錄成功')  def _order_ticket(self):    """    只實現了在無票的情況下去刷票    最關鍵的是等待驗證 WebDriverWait    :return:    """    self.drive.get(self.search_url)    WebDriverWait(self.drive, 1000).until(      EC.text_to_be_present_in_element_value((By.ID, "fromStationText"), self.from_station)    )    WebDriverWait(self.drive, 1000).until(      EC.text_to_be_present_in_element_value((By.ID, "toStationText"), self.to_station)    )    WebDriverWait(self.drive, 1000).until(      EC.text_to_be_present_in_element_value((By.ID, "train_date"), self.depart_time)    )    WebDriverWait(self.drive, 10000).until(      EC.element_to_be_clickable((By.ID, "query_ticket"))    )    searchBtn = self.drive.find_element_by_id("query_ticket")    searchBtn.click()    WebDriverWait(self.drive, 1000).until(      EC.presence_of_element_located((By.XPATH, ".//tbody[@id='queryLeftTable']/tr"))    )    # find_elements_by_xpath 返回的是一個列表    # find_element_by_xpath 返回的是一個元素    tr_list = self.drive.find_elements_by_xpath(".//tbody[@id='queryLeftTable']/tr[not(@datatran)]")    for tr in tr_list:      train_num = tr.find_element_by_class_name("number").text      # print(train_num)      if train_num in self.trains:        left_ticket_td = tr.find_element_by_xpath(".//td[4]").text        num = 1        while left_ticket_td == "無":          print("暫時無票,正在刷新")          time.sleep(2)          searchBtn.click()          num += 1          print("搶票%s次" % num)          if left_ticket_td != "無":            print(train_num + "有票")            oderBtn = tr.find_element_by_xpath(".//td[13]/a")            oderBtn.click()            WebDriverWait(self.drive, 1000).until(              EC.url_to_be(self.passenger_url)            )            WebDriverWait(self.drive, 1000).until(              EC.presence_of_element_located((By.XPATH, ".//ul[@id='normal_passenger_id']/li"))            )            passenger_labels = self.drive.find_elements_by_xpath(              ".//ul[@id='normal_passenger_id']/li/label")            for passenger_label in passenger_labels:              name = passenger_label.text              if name in self.passengers:                passenger_label.click()            submitBtn = self.drive.find_element_by_id("submitOrder_id")            submitBtn.click()            WebDriverWait(self.drive, 1000).until(              EC.presence_of_element_located((By.CLASS_NAME, "dhtmlx_wins_body_outer"))            )            WebDriverWait(self.drive, 1000).until(              EC.presence_of_element_located((By.ID, "qr_submit_id"))            )            qr_submit = self.drive.find_element_by_id("qr_submit_id")            qr_submit.click()  def run(self):    self.wait_input()    self._login()    self._order_ticket()if __name__ == '__main__':  spider = Qiangpiao()  spider.run()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线电影网| 日韩中文字幕亚洲| 亚洲欧美制服综合另类| 国产精品观看在线亚洲人成网| 中文字幕亚洲一区二区三区| 中文字幕一区二区精品| 91视频国产精品| 国产精品成人一区二区三区吃奶| 高清一区二区三区日本久| 日韩国产精品亚洲а∨天堂免| www.99久久热国产日韩欧美.com| 日韩第一页在线| 欧美亚洲成人xxx| 欧美巨乳美女视频| 日韩精品亚洲视频| 51视频国产精品一区二区| 国产亚洲a∨片在线观看| 中文字幕国产亚洲| 精品久久香蕉国产线看观看亚洲| 91精品久久久久久| 91久久久久久久久久久久久| 国产91久久婷婷一区二区| 中文字幕av一区中文字幕天堂| 亚洲男人第一网站| 国产精品久久一区主播| 亚洲国产精品va在线观看黑人| 国产在线观看精品| www.国产一区| 欧美黑人一级爽快片淫片高清| www.亚洲男人天堂| 亚洲精品97久久| 一区二区欧美久久| 欧美日韩成人精品| 亚洲老司机av| 亚洲天堂av在线播放| 国产一区二区三区四区福利| 亚洲美女久久久| 日韩风俗一区 二区| 午夜精品福利电影| 91精品视频在线| 国内精品小视频在线观看| 亚洲欧美日韩国产中文专区| 不卡毛片在线看| 国产欧美精品在线| 91po在线观看91精品国产性色| 国产视频丨精品|在线观看| 亚洲缚视频在线观看| 亚洲欧美日韩图片| 有码中文亚洲精品| 亚洲直播在线一区| 亚洲色图15p| 亚洲男人天堂古典| 97视频在线观看视频免费视频| 少妇精69xxtheporn| 91在线|亚洲| 欧美国产一区二区三区| 精品国内自产拍在线观看| 国产中文欧美精品| 超碰精品一区二区三区乱码| 一色桃子一区二区| 成人激情视频小说免费下载| 亚洲欧美在线一区二区| 国产999精品视频| 国产一区二区美女视频| 欧美老女人在线视频| 亚洲欧美三级在线| 中文字幕亚洲综合久久| 97视频国产在线| 2019亚洲男人天堂| 97在线精品国自产拍中文| 亚洲资源在线看| 97视频色精品| 欧美日韩激情网| 亚洲国产日韩欧美综合久久| 国产91在线播放| 91免费欧美精品| 精品久久国产精品| 一本色道久久综合狠狠躁篇的优点| 亚洲成avwww人| 欧美一区二区三区免费观看| 插插插亚洲综合网| 尤物九九久久国产精品的分类| 欧美一级淫片videoshd| 欧洲成人免费aa| 51精品国产黑色丝袜高跟鞋| 高清一区二区三区日本久| 清纯唯美日韩制服另类| 国产成人精品av在线| 欧美亚洲国产日韩2020| 欧美激情视频在线观看| 亚洲男人的天堂在线| 国产一区二区三区毛片| 亚洲精品中文字幕有码专区| 亚洲精品xxx| 高清欧美性猛交xxxx| 亚洲黄色www| 久久视频国产精品免费视频在线| 九九久久精品一区| 久久久久久久97| 亚洲福利视频二区| 亚洲直播在线一区| 亚洲精品综合久久中文字幕| 国产一区二区日韩| 在线丨暗呦小u女国产精品| 国产热re99久久6国产精品| 热99在线视频| 国产伊人精品在线| 欧美激情2020午夜免费观看| 成人在线视频福利| 亚洲性69xxxbbb| 国产精品久久久久久av下载红粉| 69视频在线播放| 欧美极品少妇xxxxx| 亚洲电影免费观看高清| 久久人人爽人人爽人人片av高请| 久久综合久中文字幕青草| 国产精品免费视频xxxx| 日韩电影中文字幕在线观看| 国产一区二区在线免费| 亚洲乱码国产乱码精品精| 国产成人精品免高潮在线观看| 久久99久久99精品免观看粉嫩| 青草青草久热精品视频在线网站| 亚洲美女av黄| 精品一区二区亚洲| 欧美成人精品激情在线观看| 青草青草久热精品视频在线观看| 久久激情五月丁香伊人| 欧美在线观看网址综合| 欧美一级大胆视频| 欧美激情一级二级| www.久久撸.com| 国产精品一区专区欧美日韩| 亚洲激情在线观看| 色99之美女主播在线视频| 日韩av不卡在线| 国产精品久久二区| 欧美激情综合色综合啪啪五月| 亚洲国产精品一区二区久| 日韩av在线免播放器| 91国产精品电影| 中文字幕欧美在线| 亚洲香蕉av在线一区二区三区| 成人亚洲欧美一区二区三区| 亚洲欧美国产一区二区三区| 日本不卡视频在线播放| 久久精品99久久香蕉国产色戒| 97香蕉久久超级碰碰高清版| 亚洲一区美女视频在线观看免费| 日韩av在线免播放器| 91九色在线视频| 亚洲二区在线播放视频| 亚洲欧美日韩第一区| 97精品久久久中文字幕免费| 欧美午夜性色大片在线观看| 欧美色另类天堂2015| 久久精品电影一区二区| 成人高清视频观看www| 精品久久久久人成| 亚洲成人网在线观看| 亚洲欧美日韩天堂| 日韩中文视频免费在线观看| 日韩av成人在线观看| 日韩高清免费观看|