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