Vous n'arrivez pas à vous procurer des billets pour le concert de Jay Chou ? Apprenez à utiliser Python pour créer un script de saisie automatique de tickets !

Je crois que tous ceux qui veulent aller au concert de Jay Chou ont utilisé Damai.com pour prendre des billets, n'est-ce pas ?

Mais

ne peut pas l'obtenir

Dois-je dire que je l'ai eu

insérez la description de l'image ici
insérez la description de l'image ici

insérez la description de l'image ici

Donc, aujourd'hui, je vais vous emmener utiliser Python pour créer une applet de script qui récupère automatiquement les tickets !

Points de connaissance :

  • Programmation orientée objet

  • navigateur d'opération de sélénium

  • pickle enregistre et lit les cookies pour une connexion gratuite

  • le temps de faire l'opération de retard

  • os crée un fichier et détermine si le fichier existe

Environnement de développement:

  • Édition : anaconda5.2.0 (python3.6.5)

  • Editeur : pycharm

Importez d'abord les modules requis

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

La première étape consiste à réaliser la connexion sans

Déterminer la cible, définir la variable globale

damai_url = "就是那个网站"
login_url = "就是那个登陆地址"
target_url = '就是那个目标网站
#这里不是我不放,是平台不给放
#要全部的就来

chargement initial

class Concert:
def __init__(self):
 self.status = 0 
 self.login_method = 1 
 self.driver = webdriver.Chrome(executable_path='chromedriver.exe') 

L'appel de connexion définit le cookie

def set_cookie(self):
 self.driver.get(damai_url)
print("###请点击登录###")
while self.driver.title.find('dm-全球演出赛事官方购票平台') != -1:
 sleep(1)
print('###请扫码登录###')

while self.driver.title != 'dm-全球演出赛事官方购票平台-100%正品、先付先抢、在线选座!':
 sleep(1)
print("###扫码成功###")
 pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))
print("###Cookie保存成功###")
 self.driver.get(target_url

obtenir un cookie

def get_cookie(self):
try:
 cookies = pickle.load(open("cookies.pkl", "rb")) 
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)

Connexion

 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'): 
 self.set_cookie()
else:
 self.driver.get(target_url)
 self.get_cookie()

Navigateur ouvert

def enter_concert(self):
"""打开浏览器"""
print('###打开浏览器,进入dm网###')

 self.login() 
 self.driver.refresh() 
 self.status = 2 
print("###登录成功###")
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()

La deuxième étape consiste à récupérer les billets et à passer une commande

Déterminer si un élément existe

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

except:
 flag = False
return flag

Opération de scrutin

def choose_ticket(self):
if self.status == 2: 
print("="*30)
print("###开始进行日期及票价选择###")
while self.driver.title.find('确认订单') == -1: 
try:
 buybutton = self.driver.find_element_by_class_name('buybtn').text
if buybutton == "提交缺货登记":

 self.status=2
 self.driver.get(target_url)
print('###抢票未开始,刷新等待开始###')
continue
elif buybutton == "立即预定":
 self.driver.find_element_by_class_name('buybtn').click()
 self.status = 3
elif buybutton == "立即购买":
 self.driver.find_element_by_class_name('buybtn').click()
 self.status = 4
elif buybutton == "选座购买":
 self.driver.find_element_by_class_name('buybtn').click()
 self.status = 5
except:
print('###未跳转到订单结算界面###')
 title = self.driver.title
if title == '选座购买':
 self.choice_seats()
elif title == '确认订单':
while True:
print('waiting ......')
if self.isElementExist('//*[@id="container"]/div/div[9]/button'):
 self.check_order()
break

choisissez votre siège

 def choice_seats(self):
while self.driver.title == '选座购买':
while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img'):
print('请快速的选择您的座位!!!')
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()

Opération de commande

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()

La saisie des billets est terminée, quittez

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

Code de test pour le succès

if __name__ == '__main__':
try:
 con = Concert() 
 con.enter_concert() 
 con.choose_ticket() 

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

enfin voir comment ça marche

C'est une démo, j'ai oublié de l'enregistrer quand j'ai acheté le billet hahahahaha

insérez la description de l'image ici

enfin

Je suis vraiment content d'avoir appris python, c'est un peu utile

Je vais aller au concert à partir de maintenant~

insérez la description de l'image ici

À propos de la réserve technique Python

Il est bon d'apprendre Python, qu'il s'agisse d'un emploi ou d'une activité secondaire pour gagner de l'argent, mais pour apprendre Python, vous avez toujours besoin d'un plan d'étude. Enfin, tout le monde partagera un ensemble complet de supports d'apprentissage Python pour aider ceux qui veulent apprendre Python !

1. Apprendre les routes dans toutes les directions de Python

L'itinéraire de toutes les directions en Python consiste à organiser les points techniques couramment utilisés de Python pour former un résumé des points de connaissance dans divers domaines. Son utilité réside dans le fait que vous pouvez trouver des ressources d'apprentissage correspondantes en fonction des points de connaissance ci-dessus pour vous assurer que vous apprenez plus exhaustivement.

2. Logiciel d'apprentissage

Si un ouvrier veut faire du bon travail, il doit d'abord affûter ses outils. Le logiciel de développement couramment utilisé pour apprendre Python est ici, ce qui vous fait gagner beaucoup de temps.

3. Vidéo d'apprentissage d'introduction

Lorsque nous regardons des vidéos et apprenons, nous ne pouvons pas simplement bouger nos yeux et notre cerveau sans utiliser nos mains. Une méthode d'apprentissage plus scientifique consiste à les utiliser après avoir compris. À ce stade, le projet pratique est très approprié.

4. Cas pratiques

La théorie optique est inutile, vous devez apprendre à suivre, et vous devez le faire vous-même, afin que vous puissiez appliquer ce que vous avez appris à la pratique.À ce stade, vous pouvez apprendre de certains cas de combat réels.

5. Matériel d'entretien

Nous devons apprendre Python pour trouver des emplois bien rémunérés. Les questions d'entrevue suivantes sont les derniers documents d'entrevue d'entreprises Internet de première ligne telles qu'Ali, Tencent et Byte, et les patrons d'Ali ont donné des réponses faisant autorité. Après avoir terminé cet ensemble, les matériaux d'entrevue croire que tout le monde peut trouver un emploi satisfaisant.


Cette version complète de l'ensemble complet de supports d'apprentissage Python a été téléchargée sur CSDN. Si vous en avez besoin, vous pouvez scanner le code QR de la certification officielle CSDN ci-dessous sur WeChat pour l'obtenir gratuitement【保证100%免费

Je suppose que tu aimes

Origine blog.csdn.net/Python_cocola/article/details/129879007#comments_26543887
conseillé
Classement