Python用selenium實現模擬登錄,各種搶票腳本的第一步


本次目標

知識點

  • 面向對象編程
  • selenium 操作瀏覽器
  • pickle 保存和讀取Cookie實現免登陸
  • time 做延時操作
  • os 創建文件,判斷文件是否存在

第三方庫

selenium >>> pip install selenium==3.4.1

開發環境

  • 版 本:anaconda(python3.8.8)
  • 編輯器:pycharm

先導入所需模塊

from selenium import webdriver  # 操作谷歌瀏覽器 需要額外安裝的 並且現在安裝這個模塊得指定版本 3.4
from time import sleep
import pickle  # 保存和讀取cookie實現免登錄的工具
import os   # 操作文件的模塊

 

定義變量

# 大麥網主頁
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?id=610820299671'

 



在這個類里面完成所有的登陸功能

class Concert:
    # 完成一個初始化
    def __init__(self):
        self.status = 0  # 狀態碼, 表示當前操作執行到了哪個步驟
        self.login_method = 1  # {0: 模擬登陸, 1: 免登錄}
        self.driver = webdriver.Chrome(executable_path='chromedriver.exe')

 

登陸網站的時候要用的方法 沒有登陸的情況下

第一次登陸的時候,會幫助我記錄我們的登陸信息

登陸成功之后 cookie會發生變化

def set_cookies(self):
    self.driver.get(damai_url)  # 打開大麥網主頁
    print("###請點擊登陸###")
    # 如果說我一直沒有點擊登陸? 我是不是這個程序就停在這里了
    while self.driver.title.find('大麥網-全球演出賽事官方購票平台') != -1:
        sleep(1)    # 程序休眠
    print("###掃碼成功###")
    pickle.dump(self.driver.get_cookies(), open('cookies.pkl', 'wb'))   #  保存cookie
    print('###cookie保存成功###')
    self.driver.get(target_url)

 

直接拿本地的登陸信息

假如我現在已經登陸過了,那么直接拿本地的登陸信息,直接登陸就可以了

def get_cookie(self):
    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###')

 

實現登錄

def login(self):
    if self.login_method == 0:
        self.driver.get(login_url)  # 跳轉到登陸界面登陸一下
        print('###開始登陸###')
    elif self.login_method == 1:
        # 如果我本地沒有cookies.pkl文件
        if not os.path.exists('cookies.pkl'):
            self.set_cookies()      # 沒有文件的情況下, 再次登陸一下
        else:
            self.driver.get(target_url)  # 跳轉到搶票頁面
            self.get_cookie()           # 登陸信息載入瀏覽器

 

打開瀏覽器功能,調用所以所有函數

調用登陸,並且刷新頁面,改變登陸成功的標識

def enter_concert(self):
    print('###打開瀏覽器, 進入大麥網###')
    # 調用登陸
    self.login()
    self.driver.refresh()
    self.status = 2
    print('###登陸成功###')

 

執行代碼

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM