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
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
enfin
Je suis vraiment content d'avoir appris python, c'est un peu utile
Je vais aller au concert à partir de maintenant~
À 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.