国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 為了順利買到演唱會的票用Python制作了自動搶票的腳本

為了順利買到演唱會的票用Python制作了自動搶票的腳本

2022-01-25 00:18松鼠愛吃餅干 Python

大麥網(wǎng),是中國綜合類現(xiàn)場娛樂票務營銷平臺,業(yè)務覆蓋演唱會、 話劇、音樂劇、體育賽事等領(lǐng)域。但是因為票數(shù)有限,還有黃牛們不能丟了飯碗,所以導致了,很多人都搶不到票,那么,今天帶大家用Python來制作一個自動搶票的

知識點:

  • 面向?qū)ο缶幊?/li>
  • selenium 操作瀏覽器
  • pickle 保存和讀取Cookie實現(xiàn)免登陸
  • time 做延時操作
  • os 創(chuàng)建文件,判斷文件是否存在

 

開發(fā)環(huán)境:

  • 版 本:anaconda5.2.0(python3.6.5)
  • 編輯器:pycharm

【付費VIP完整版】只要看了就能學會的教程,80集Python基礎(chǔ)入門視頻教學

點這里即可免費在線觀看

 

先導入本次所需的模塊

import os
import time
import pickle
from time import sleep
from selenium import webdriver

 

第一步,實現(xiàn)免登錄

確定目標,設(shè)置全局變量

# 大麥網(wǎng)主頁
damai_url = "https://www.damai.cn/"
# 登錄頁
login_url = "https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F"
# 搶票目標頁
target_url = 'https://detail.damai.cn/item.htm?spm=a2oeg.search_category.0.0.77f24d15RWgT4o&id=654534889506&clicktitle=%E5%A4%A7%E4%BC%97%E7

初始化加載

class Concert:
  def __init__(self):
      self.status = 0         # 狀態(tài),表示如今進行到何種程度
      self.login_method = 1   # {0:模擬登錄,1:Cookie登錄}自行選擇登錄方式
      self.driver = webdriver.Chrome(executable_path='chromedriver.exe')        # 默認Chrome瀏覽器

登錄調(diào)用設(shè)置cookie

def set_cookie(self):
  self.driver.get(damai_url)
  print("###請點擊登錄###")
  while self.driver.title.find('大麥網(wǎng)-全球演出賽事官方購票平臺') != -1:
      sleep(1)
  print('###請掃碼登錄###')

  while self.driver.title != '大麥網(wǎng)-全球演出賽事官方購票平臺-100%正品、先付先搶、在線選座!':
     sleep(1)
  print("###掃碼成功###")
  pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))
  print("###Cookie保存成功###")
  self.driver.get(target_url)

獲取cookie

def get_cookie(self):
  try:
      cookies = pickle.load(open("cookies.pkl", "rb"))  # 載入cookie
      for cookie in cookies:
          cookie_dict = {
              'domain':'.damai.cn',  # 必須有,不然就是假登錄
              'name': cookie.get('name'),
              'value': cookie.get('value')
          }
          self.driver.add_cookie(cookie_dict)
      print('###載入Cookie###')
  except Exception as e:
      print(e)

登錄

  def login(self):
      if self.login_method==0:
          self.driver.get(login_url)                                
          # 載入登錄界面
          print('###開始登錄###')

      elif self.login_method==1:
          if not os.path.exists('cookies.pkl'):                     
          # 如果不存在cookie.pkl,就獲取一下
              self.set_cookie()
          else:
              self.driver.get(target_url)
              self.get_cookie()

打開瀏覽器

def enter_concert(self):
  """打開瀏覽器"""
  print('###打開瀏覽器,進入大麥網(wǎng)###')
  # self.driver.maximize_window()           # 最大化窗口
  # 調(diào)用登陸
  self.login()                            # 先登錄再說
  self.driver.refresh()                   # 刷新頁面
  self.status = 2                         # 登錄成功標識
  print("###登錄成功###")
  # 后續(xù)德云社可以講
  if self.isElementExist('/html/body/div[2]/div[2]/div/div/div[3]/div[2]'):
      self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div[3]/div[2]').click()

 

第二步,搶票并下單

判斷元素是否存在

def isElementExist(self, element):
  flag = True
  browser = self.driver
  try:
      browser.find_element_by_xpath(element)
      return flag

  except:
      flag = False
      return flag

選票操作

def choose_ticket(self):
  if self.status == 2:                  #登錄成功入口
      print("="*30)
      print("###開始進行日期及票價選擇###")
      while self.driver.title.find('確認訂單') == -1:           # 如果跳轉(zhuǎn)到了訂單結(jié)算界面就算這步成功了,否則繼續(xù)執(zhí)行此步
          try:
              buybutton = self.driver.find_element_by_class_name('buybtn').text
              if buybutton == "提交缺貨登記":
                  # 改變現(xiàn)有狀態(tài)
                  self.status=2
                  self.driver.get(target_url)
                  print('###搶票未開始,刷新等待開始###')
                  continue
              elif buybutton == "立即預定":
                  self.driver.find_element_by_class_name('buybtn').click()
                  # 改變現(xiàn)有狀態(tài)
                  self.status = 3
              elif buybutton == "立即購買":
                  self.driver.find_element_by_class_name('buybtn').click()
                  # 改變現(xiàn)有狀態(tài)
                  self.status = 4
              # 選座購買暫時無法完成自動化
              elif buybutton == "選座購買":
                  self.driver.find_element_by_class_name('buybtn').click()
                  self.status = 5
          except:
              print('###未跳轉(zhuǎn)到訂單結(jié)算界面###')
          if              # 實現(xiàn)選座位購買的邏輯
              self.choice_seats()
          elif              while True:
                  # 如果標題為確認訂單
                  print('waiting ......')
                  if self.isElementExist('//*[@id="container"]/div/div[9]/button'):
                      self.check_order()
                      break

選擇座位

  def choice_seats(self):
      while self.driver.title == '選座購買':
          while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img'):
              # 座位手動選擇 選中座位之后//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img 就會消失
              print('請快速的選擇您的座位!!!')
          # 消失之后就會出現(xiàn) //*[@id="app"]/div[2]/div[2]/div[2]/div
          while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[2]/div'):
              # 找到之后進行點擊確認選座
              self.driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[2]/button').click()

下單操作

def check_order(self):
  if self.status in [3,4,5]:
      print('###開始確認訂單###')
      try:
          # 默認選第一個購票人信息
          self.driver.find_element_by_xpath('//*[@id="container"]/div/div[2]/div[2]/div[1]/div/label').click()
      except Exception as e:
          print("###購票人信息選中失敗,自行查看元素位置###")
          print(e)
      # 最后一步提交訂單
      time.sleep(0.5)  # 太快會影響加載,導致按鈕點擊無效
      self.driver.find_element_by_xpath('//div[@class = "w1200"]//div[2]//div//div[9]//button[1]').click()

搶票完成,退出

def finish(self):
  self.driver.quit()

測試代碼是否成功

if __name__ == '__main__':
  try:
      con = Concert()             # 具體如果填寫請查看類中的初始化函數(shù)
      con.enter_concert()         # 打開瀏覽器
      con.choose_ticket()         # 開始搶票

  except Exception as e:
      print(e)
      con.finish()

 

最后看下效果如何

為了順利買到演唱會的票用Python制作了自動搶票的腳本

到此這篇關(guān)于為了順利買到演唱會的票用Python制作了自動搶票的腳本的文章就介紹到這了,更多相關(guān)Python 自動搶票內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務器之家!

原文鏈接:https://pythonjx.blog.csdn.net/article/details/120286574

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久综合久久久 | 久久99精品国产麻豆婷婷洗澡 | 午夜国产视频 | 91嫩草香蕉 | 99re在线观看视频 | 欧美日韩在线电影 | 一级黄色大片在线观看 | 偷拍一区二区三区 | 狠狠色综合网站久久久久久久 | 黄色大片在线播放 | 九九久久精品 | 日本中文字幕免费 | 四虎在线视频 | 国精产品一区二区三区有限公司 | 国产日韩精品一区二区 | 久久精品日韩 | 婷婷成人av | 人妖一区 | 天堂中文在线视频 | 欧美一级免费看 | 精品96久久久久久中文字幕无 | 成人在线一区二区三区 | 色爱综合网 | 午夜影院在线 | 精品久久一二三区 | 欧美日本在线观看 | 国产乱视频 | 久久av网| 久久久久综合 | 一本色道精品久久一区二区三区 | 欧美日韩国产在线 | 精品国产一区二区三区在线观看 | 精品二区 | 精品国产鲁一鲁一区二区在线观看 | 欧美一区二区在线刺激视频 | 国精产品一区二区三区有限公司 | 99精品一区二区三区 | 久毛片| 日韩成人在线视频 | 日韩精品成人 | 日韩精品1区2区3区 国产日韩在线视频 |