1. 程式人生 > >使用python模擬登登入網站

使用python模擬登登入網站

環境要求

  1. python 3.6
  2. chromedriver.exe 檔案

人工登入

人工登入某個網站,首先需要用瀏覽器開啟登入頁面,然後在輸入框中輸入對應的賬號和密碼,最後點選登入,以下使用程式碼模擬以上過程達到登入效果

程式碼實現

from selenium import webdriver
import os
from selenium.webdriver.common.keys import Keys
import time
import pickle
import datetime

# 儲存 cookie
def save_cookies(cookies):
    pickle.dump(cookies, open(r"D:\zyn\cookies\net\hbyunan.pkl"
, 'wb')) # 載入 cookie def load_cookies(driver): cookies = pickle.load(open(r"D:\zyn\cookies\net\hbyunan.pkl", 'rb')) # 這裡只將 domain 為 .yeah.net 和 .163.com 的載入進來 for cookie in cookies: if cookie['domain'] == '.yeah.net' and cookie['domain'] == '.163.com': driver.add_cookie(cookie) # 判斷是否離開了某個頁面
def wait_leave_page(driver, url, max_sec=10): time.time() startTime = datetime.datetime.now(); while True: if (datetime.datetime.now() - startTime).seconds > max_sec: print('超過%d秒,頁面沒有離開%s' % (max_sec, driver.current_url)) return False if driver.current_url.find(url) != -1
: return True time.sleep(1) def login(): # 載入 chrome 的 driver 這裡會開啟一個谷歌瀏覽器 # 注意 chromedriver.exe 檔案的路徑 driver = webdriver.Chrome(r"d:\chromedriver.exe") # 開啟網易郵箱登入頁面 driver.get("http://yeah.net/") assert "網易" in driver.title # 因為 網易郵箱登入頁面賬號輸入框在 <iframe id = 'x-URS-iframe' ... >... 中 # 這裡先 跳到 這個 iframe 中 driver.switch_to.frame("x-URS-iframe") # 根據 name 找到 密碼輸入框 # <input name="password" > elem = driver.find_element_by_name("password") # 清空原有內容 elem.clear() # 填入密碼 elem.send_keys("這裡是密碼") # 同理填入 賬號 elem = driver.find_element_by_name("email") elem.clear() elem.send_keys("hbyunan") # 得到 登入按鈕並單擊 elem = driver.find_element_by_id("dologin") elem.click() # 等待 1s 並判斷,是否能離開登入頁面,如果能離開說明登入成功 time.sleep(1) if wait_leave_page(driver, "mail"): print("登入成功") save_cookies(driver.get_cookies()) else: print("登入失敗") if "__main__" == __name__: login()