使用python模擬登登入網站
阿新 • • 發佈:2019-01-25
環境要求
- python 3.6
- 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()