python通過windows身份驗證登錄網頁

python通過base64對用戶名和密碼進行加密,通過windows身份驗證進行登錄,然後用
BeautifulSoup對網頁進行抓取,並通過smtplib和MIMEText將數據發送到指定郵箱
下面直接上代碼

# -*- coding: utf-8 -*-

import urllib2
import sys
import ssl
import base64
from bs4 import BeautifulSoup

import smtplib  # 加載smtplib模塊
from email.mime.text import MIMEText
from email.utils import formataddr
import time
import re


# 該方法爲替換字符串方法,將text替換成adict
def multiple_replace(text, adict):
    rx = re.compile('|'.join(map(re.escape, adict)))
    def one_xlat(match):
        return adict[match.group(0)]
    return rx.sub(one_xlat, text)  # 每遇到一次匹配就會調用回調函數

def web_crawler(theurl):
    # 用戶名和密碼
    username = '****'
    password = '****'

    ssl._create_default_https_context = ssl._create_unverified_context  # 忽略證書的驗證
    # 對用戶名和密碼進行base64加密傳送
    base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
    authheader = "Basic %s" % base64string
    # theurl 的請求
    req = urllib2.Request(theurl)  # 向服務器發送一個Request請求
    req.add_header("Authorization", authheader)  # 請求頭裏添加authheader信息
    try:
        # 對theurl 的請求進行處理
        handle = urllib2.urlopen(req)  # 打開網址
        thepage = handle.read()  # 讀取網頁信息
        return thepage
    except IOError, e:
        print "It looks like the username or password is wrong."
        sys.exit(0)

# 將百分數轉化爲 float 型整數
def percent_to_float(string):
    if "%" in string:
        newint = float(string.strip("%")) / 100
        return newint
    else:
        print("你輸入的不是百分比!")


if __name__ == '__main__':
    reload(sys)
    sys.setdefaultencoding('utf-8')

    # 對theurl1 的數據進行處理
    dica1 = eval(web_crawler('https:url*******'))  # 將str轉換成dict字典類型
    # 遍歷輸出dict的值
    for i1 in dica1.keys():
        if i1 == 'b_clients':
            print 'Active Clients:' + '\n' + '  2.4GHz' + ':' + str(dica1[i1])
        if i1 == 'a_clients':
            print '  5GHz' + ':' + str(dica1[i1])
        elif i1 == 'aps_up':
            print 'Aceess Points:' + str(dica1[i1])
        else:
            None
            # print i+":"+str(dica[i])
    acuser24g_num_1 = str(dica1['b_clients'])
    acuser5g_num_1 = str(dica1['a_clients'])
    aps_up_num_1 = str(dica1['aps_up'])

    

    # 郵件模塊
    my_sender = '******'  # 發件人郵箱賬號
    # 收件人郵箱賬號
    my_user = '*****'
    cc_user = '****'  # 抄送人
    nowtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))  # 時間
    # 配置文件,進行字符串替換
    dict_key_value = {'nowtime': nowtime, 'acuser24g_num_1': acuser24g_num_1, 'acuser5g_num_1': acuser5g_num_1, 'aps_up_num_1': aps_up_num_1,'pa_wlan_num_2':pa_wlan_num_2,'pingannet_num_2':pingannet_num_2,'pa_wlan_voice_num_2':pa_wlan_voice_num_2,'pa_wlan_guest_num_2':pa_wlan_guest_num_2,'apple_num_2':apple_num_2,'memory_usage_num_3':memory_usage_num_3,'cpu_usage_num_3':cpu_usage_num_3,'memory_usage_num_5':memory_usage_num_5,'cpu_usage_num_5':cpu_usage_num_5,'dot11a_radios_num_4':dot11a_radios_num_4,'dot11a_up_radios_num_4':dot11a_up_radios_num_4,'dot11a_down_radios_num_4':dot11a_down_radios_num_4,'dot11b_radios_num_4':dot11b_radios_num_4,'dot11b_up_radios_num_4':dot11b_up_radios_num_4,'dot11b_down_radios_num_4':dot11b_down_radios_num_4,'current_aps_num_4':current_aps_num_4,'current_up_aps_num_4':current_up_aps_num_4,'current_down_aps_num_4':current_down_aps_num_4,'current_clients_num_6':current_clients_num_6,'blacklist_clients_num_6':blacklist_clients_num_6,'disabled_clients_num_6':disabled_clients_num_6,'active_rogues_num_7':active_rogues_num_7,'active_client_rogues_num_7':active_client_rogues_num_7,'adhoc_rogues_num_7':adhoc_rogues_num_7,'rogues_on_wired_num_7':rogues_on_wired_num_7,'pa_wlan_num_8':pa_wlan_num_8,'pingannet_num_8':pingannet_num_8,'apple_num_8':apple_num_8,'pa_wlan_guest_num_8':pa_wlan_guest_num_8,'cpu_usage_num_9':cpu_usage_num_9,'memory_usage_num_9':memory_usage_num_9,'dot11a_radios_num_10':dot11a_radios_num_10,'dot11a_up_radios_num_10':dot11a_up_radios_num_10,'dot11a_down_radios_num_10':dot11a_down_radios_num_10,'dot11b_radios_num_10':dot11b_radios_num_10,'dot11b_up_radios_num_10':dot11b_up_radios_num_10,'dot11b_down_radios_num_10':dot11b_down_radios_num_10,'current_aps_num_10':current_aps_num_10,'current_up_aps_num_10':current_up_aps_num_10,'current_down_aps_num_10':current_down_aps_num_10,'current_clients_num_11':current_clients_num_11,'blacklist_clients_num_11':blacklist_clients_num_11,'disabled_clients_num_11':disabled_clients_num_11,'active_rogues_num_12':active_rogues_num_12,'active_client_rogues_num_12':active_client_rogues_num_12,'adhoc_rogues_num_12':adhoc_rogues_num_12,'rogues_on_wired_num_12':rogues_on_wired_num_12,'pa_wlan_num_13':pa_wlan_num_13,'pingannet_num_13':pingannet_num_13,'apple_num_13':apple_num_13,'pa_wlan_guest_num_13':pa_wlan_guest_num_13,'pa_wlan_voice_num_13':pa_wlan_voice_num_13,'cpu_usage_num_14':cpu_usage_num_14,'memory_usage_num_14':memory_usage_num_14,'dot11a_radios_num_15':dot11a_radios_num_15,'dot11a_up_radios_num_15':dot11a_up_radios_num_15,'dot11a_down_radios_num_15':dot11a_down_radios_num_15,'dot11b_radios_num_15':dot11b_radios_num_15,'dot11b_up_radios_num_15':dot11b_up_radios_num_15,'dot11b_down_radios_num_15':dot11b_down_radios_num_15,'dot11xor_radios_num_15':dot11xor_radios_num_15,'dot11xor_up_radios_num_15':dot11xor_up_radios_num_15,'dot11xor_down_radios_num_15':dot11xor_down_radios_num_15,'current_aps_num_15':current_aps_num_15,'current_up_aps_num_15':current_up_aps_num_15,'current_down_aps_num_15':current_down_aps_num_15,'current_clients_num_16':current_clients_num_16,'blacklist_clients_num_16':blacklist_clients_num_16,'disabled_clients_num_16': disabled_clients_num_16, 'active_rogues_num_17': active_rogues_num_17, 'active_client_rogues_num_17': active_client_rogues_num_17, 'adhoc_rogues_num_17': adhoc_rogues_num_17, 'rogues_on_wired_num_17': rogues_on_wired_num_17, 'pa_wlan_num_18': pa_wlan_num_18, 'pingannet_num_18': pingannet_num_18, 'pa_wlan_guest_num_18': pa_wlan_guest_num_18, 'cpu_use_3': cpu_use_3, 'memory_use_3': memory_use_3, 'cpu_use_5': cpu_use_5,'memory_use_5': memory_use_5, 'cpu_use_9': cpu_use_9, 'memory_use_9': memory_use_9, 'cpu_use_14': cpu_use_14, 'memory_use_14': memory_use_14}  # 需要替換的dict
    hpage1 = open('htmltestfile1.html').read( )  # 抄送人,此處引用的是一個html文件
    msgTotal = multiple_replace(hpage1,dict_key_value)

    msg = MIMEText(msgTotal, 'html', 'utf-8')
    msg['From'] = formataddr(["FromACmsg", my_sender])  # 括號裏的對應發件人郵箱暱稱、發件人郵箱賬號
    msg['To'] = formataddr(["ToUser", my_user])  # 括號裏的對應收件人郵箱暱稱、收件人郵箱賬號
    msg['Cc'] = formataddr(["CcUser", cc_user])  # 括號裏的對應抄送人郵箱暱稱、收件人郵箱賬號

    msg['Subject'] = "****"  # 郵件的主題,也可以說是標題

    server = smtplib.SMTP()  # 發件人郵箱中的SMTP服務器,端口是25
    server.connect("****", 25)
    # server.connect("stgsmtprelay.paic.com.cn", 25)
    # server.login(my_sender, "")  # 括號中對應的是發件人郵箱賬號、郵箱密碼

    server.sendmail(my_sender, my_user, msg.as_string())  # 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、發送郵件
    server.quit()  # 這句是關閉連接的意思


關於BeautifulSoup可以查看http://blog.csdn.net/qq_25134989/article/details/78830239



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章