本次目標

知識點
- 面向物件編程
- 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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/356022.html
標籤:Python
