ジェイ・チョウのコンサートに行きたい人は皆、Damai.com を利用してチケットを手に入れたことがあると思います。
しかし
取れません
分かったと言うべきか
そこで、今日は Python を使用してチケットを自動的に取得するスクリプト アプレットを作成する方法を説明します。
知識ポイント:
-
オブジェクト指向プログラミング
-
Selenium操作ブラウザ
-
pickle は Cookie を保存および読み取り、ログイン不要を実現します
-
遅延操作を行う時間
-
OSはファイルを作成し、そのファイルが存在するかどうかを判断します
開発環境:
-
版 本:anaconda5.2.0(python3.6.5)
-
エディタ: pycharm
最初に必要なモジュールをインポートします
import os
import time
import pickle
from time import sleep
from selenium import webdriver
その第一歩はログインフリーの実現です
ターゲットを決定し、グローバル変数を設定する
damai_url = "就是那个网站"
login_url = "就是那个登陆地址"
target_url = '就是那个目标网站
#这里不是我不放,是平台不给放
#要全部的就来
初期ロード
class Concert:
def __init__(self):
self.status = 0
self.login_method = 1
self.driver = webdriver.Chrome(executable_path='chromedriver.exe')
ログイン呼び出しにより 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
クッキーを取得する
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)
ログイン
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()
ブラウザを開く
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()
2番目のステップはチケットを入手して注文することです
要素が存在するかどうかを判断する
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:
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
座席を選択する
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()
注文操作
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()
con.enter_concert()
con.choose_ticket()
except Exception as e:
print(e)
con.finish()
最後にそれがどのように機能するかを見てみましょう
これはデモです、チケットを買ったときに録音するのを忘れました、ははははは
やっと
Pythonを学んで本当に良かったです、少し役に立ちました
今からコンサートに行きますよ〜
Python テクニカル リザーブについて
就職でも副業でもお金を稼ぐためにPythonを学ぶのは良いことですが、Pythonを学ぶにはやはり学習計画が必要です。最後に、Python を学習したい人に役立つ Python 学習教材の完全なセットを全員で共有します。
1.Pythonの全方位学習ルート
Python の全方位ルートは、Python の一般的に使用される技術的なポイントを整理して、さまざまな分野の知識ポイントをまとめることです。その有用性は、上記の知識ポイントに応じて、対応する学習リソースを見つけて確実に学習できることにあります。より包括的に。
2. 学習ソフト
労働者が良い仕事をしたいなら、まず道具を研ぐ必要があります。Python を学習するために一般的に使用される開発ソフトウェアがここにあり、時間を大幅に節約できます。
3. 入門学習ビデオ
動画を見て学ぶ場合、手を使わずに目や頭を動かすだけではなく、理解した上で使うという科学的な学習方法があり、このような時にハンズオンプロジェクトは非常に適しています。
4. 実践事例
光学理論は役に立たず、それに従って学ぶ必要があり、学んだことを実践に応用できるように自分でやる必要がありますが、このとき、いくつかの実戦事例から学ぶことができます。
5. インタビュー資料
高収入の仕事を見つけるには Python を学ばなければなりません。以下の面接の質問は、アリ、テンセント、バイトなどの第一線のインターネット企業からの最新の面接資料であり、アリの上司が権威ある回答をしています。このセットを終えた後、面接資料は誰もが満足のいく仕事を見つけることができると信じています。