zoukankan      html  css  js  c++  java
  • 使用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:zyncookies
    ethbyunan.pkl", 'wb'))
    
    # 加载 cookie
    def load_cookies(driver):
        cookies = pickle.load(open(r"D:zyncookies
    ethbyunan.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()
    
  • 相关阅读:
    [HEOI2013]Eden 的新背包问题
    [UOJ#77]A+B Problem
    [CodeForces]786B Legacy
    [LUOGU]P4098[HEOI2013]ALO
    [BZOJ3207]花神的嘲讽计划
    [LUOGU]P2633 Count on a tree
    【东莞市选2007】拦截导弹
    [JZOJ] 3462. 【NOIP2013模拟联考5】休息(rest)
    [BZOJ] 2705: [SDOI2012]Longge的问题
    [BZOJ] 1191: [HNOI2006]超级英雄Hero
  • 原文地址:https://www.cnblogs.com/zyndev/p/7612998.html
Copyright © 2011-2022 走看看