Não consegue ingressos para o show de Jay Chou? Ensine você a usar o Python para criar um script de captura automática de tickets!

Acredito que todo mundo que quer ir ao show de Jay Chou já usou o Damai.com para conseguir ingressos, certo?

Mas

não consigo

Devo dizer que entendi

insira a descrição da imagem aqui
insira a descrição da imagem aqui

insira a descrição da imagem aqui

Então, hoje vou levar você a usar o Python para criar um applet de script que captura tickets automaticamente!

Pontos de conhecimento:

  • Programação Orientada a Objetos

  • navegador de operação de selênio

  • pickle salva e lê cookies para obter acesso sem login

  • hora de fazer a operação de atraso

  • os cria um arquivo e determina se o arquivo existe

Ambiente de desenvolvimento:

  • Edição: anaconda5.2.0 (python3.6.5)

  • Editor: Pycharm

Importe os módulos necessários primeiro

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

O primeiro passo é realizar o login sem

Determine o alvo, defina a variável global

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

carregamento inicial

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

A chamada de login define o 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

pegar biscoito

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)

Conecte-se

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

Navegador aberto

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

O segundo passo é pegar os ingressos e fazer um pedido

Determinar se um elemento existe

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

except:
 flag = False
return flag

operação de votação

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

escolha assento

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

Operação do pedido

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

A coleta de bilhetes está concluída, saia

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

Código de teste para o sucesso

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

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

Finalmente veja como funciona

Aqui está a demo, esqueci de gravar quando comprei o ingresso hahahahaha

insira a descrição da imagem aqui

afinal

Estou muito feliz por ter aprendido python, é um pouco útil

Eu vou ao show de agora em diante~

insira a descrição da imagem aqui

Sobre a reserva técnica do Python

É bom aprender Python, seja um emprego ou um negócio secundário para ganhar dinheiro, mas para aprender Python, você ainda precisa de um plano de estudo. Por fim, todos compartilharão um conjunto completo de materiais de aprendizado de Python para ajudar aqueles que desejam aprender Python!

1. Rotas de aprendizado em todas as direções do Python

A rota de todas as direções no Python é organizar os pontos técnicos comumente usados ​​do Python para formar um resumo dos pontos de conhecimento em vários campos. de forma mais abrangente.

2. Software de aprendizagem

Se um trabalhador quer fazer um bom trabalho, ele deve primeiro afiar suas ferramentas. O software de desenvolvimento comumente usado para aprender Python está aqui, o que economiza muito tempo.

3. Vídeo de aprendizado introdutório

Quando assistimos a vídeos e aprendemos, não podemos apenas mover nossos olhos e cérebro sem usar nossas mãos. Um método de aprendizado mais científico é usá-los após a compreensão. Neste momento, o projeto prático é muito adequado.

4. Casos práticos

A teoria ótica é inútil, você tem que aprender a acompanhar, e você mesmo tem que fazer, para que possa aplicar o que aprendeu na prática.Neste momento, você pode aprender com alguns casos reais de combate.

5. Materiais de entrevista

Aprendemos Python para encontrar um emprego bem remunerado. As perguntas da entrevista a seguir são os materiais de entrevista mais recentes de empresas de Internet de primeira linha, como Ali, Tencent e Byte, e os chefes de Ali deram respostas confiáveis. Depois de terminar este conjunto, o materiais de entrevista acreditam que todos podem encontrar um emprego satisfatório.


Esta versão completa do conjunto completo de materiais de aprendizado do Python foi carregada no CSDN. Se precisar, você pode escanear o código QR da certificação oficial do CSDN abaixo no WeChat para obtê-lo gratuitamente【保证100%免费

Acho que você gosta

Origin blog.csdn.net/Python_cocola/article/details/129879007#comments_26543887
Recomendado
Clasificación