最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

測(cè)試、預(yù)發(fā)布后用python檢測(cè)網(wǎng)頁(yè)是否有日常鏈接

 更新時(shí)間:2014年06月03日 09:02:32   作者:  
難免會(huì)碰到秀逗了把測(cè)試的鏈接發(fā)布到線上的情況,一般這種都是通過一些測(cè)試的檢查工具來(lái)檢查鏈接來(lái)規(guī)避風(fēng)險(xiǎn)的,下面為大家簡(jiǎn)述下大概的實(shí)現(xiàn)思路
在大的互聯(lián)網(wǎng)公司干技術(shù)的基本都會(huì)碰到測(cè)試、預(yù)發(fā)布、線上這種多套環(huán)境的,來(lái)實(shí)現(xiàn)測(cè)試和線上正式環(huán)境的隔離,這種情況下,就難免會(huì)碰到秀逗了把測(cè)試的鏈接發(fā)布到線上的情況,一般這種都是通過一些測(cè)試的檢查工具來(lái)檢查鏈接來(lái)規(guī)避風(fēng)險(xiǎn)的。前兩天跟了一個(gè)問題也是這個(gè)情況,開發(fā)疏忽把日常url發(fā)布到線上了。但是測(cè)試那邊沒有自動(dòng)化的監(jiān)控工具,導(dǎo)致沒有及時(shí)發(fā)現(xiàn),由于最近正好在看python,后來(lái)處理完回家就想用python做個(gè)簡(jiǎn)單的監(jiān)控。

大略思路是:用python寫一個(gè)腳本來(lái)分析網(wǎng)頁(yè)里的所有url,看是否包含日常的鏈接,然后把腳本放到crontab里跑定時(shí)任務(wù),10分鐘跑一次檢查。如果發(fā)現(xiàn)非法鏈接,就發(fā)告警郵件給相關(guān)人員。腳本代碼100行左右,比較好理解,貼上代碼。

本來(lái)想用beautifulsoup,不過考慮到安裝三方庫(kù)麻煩,所以還是用自帶的sgmllib來(lái),不需要關(guān)心庫(kù)。發(fā)郵件函數(shù)沒有實(shí)現(xiàn),根據(jù)各自的smtp服務(wù)器實(shí)現(xiàn)以下即可。
復(fù)制代碼 代碼如下:

#!/usr/bin/env python
#coding:UTF-8

import urllib2
from sgmllib import SGMLParser
import smtplib
import time
#from email.mime.text import MIMEText
#from bs4 import BeautifulSoup
#import re

class UrlParser(SGMLParser):
urls = []
def do_a(self,attrs):
'''''parse tag a'''
for name,value in attrs:
if name=='href':
self.urls.append(value)
else:
continue

def do_link(self,attrs):
'''''parse tag link'''
for name,value in attrs:
if name=='href':
self.urls.append(value);
else:
continue

def checkUrl(checkurl, isDetail):
'''''檢查checkurl對(duì)應(yīng)的網(wǎng)頁(yè)源碼是否有非法url'''
parser = UrlParser()
page = urllib2.urlopen(checkurl)
content = page.read()
#content = unicode(content, "gb2312").encode("utf8")
parser.feed(content)
urls = parser.urls

dailyUrls = []
detailUrl = ""
for url in urls:
if 'daily' in url:
dailyUrls.append(url);
if not detailUrl and not isDetail and 'www.bc5u.com' in url:
detailUrl = url

page.close()
parser.close()

if isDetail:
return dailyUrls
else:
return dailyUrls,detailUrl

def sendMail():
'''''發(fā)送提醒郵件'''
pass

def log(content):
'''''記錄執(zhí)行日志'''
logFile = 'checkdailyurl.log'
f = open(logFile,'a')
f.write(str(time.strftime("%Y-%m-%d %X",time.localtime()))+content+'\n')
f.flush()
f.close()

def main():
'''''入口方法'''
#檢查ju
url = "www.bc5u.com"

dailyUrls,detailUrl=checkUrl(url, False)
if dailyUrls:
#檢查到daily鏈接,發(fā)送告警郵件
sendMail()
log('check: find daily url')
else:
#沒檢查到daily鏈接,不處理
log('check: not find daily url')

#檢查judetail
dailyUrls=checkUrl(detailUrl, True)
if dailyUrls:
#檢查到daily鏈接,發(fā)送告警郵件
log('check: find daily url')
sendMail()
else:
#沒檢查到daily鏈接,不處理
log('check: not find daily url')

if __name__ == '__main__':
main()

相關(guān)文章

最新評(píng)論

连城县| 武功县| 古田县| 连州市| 元氏县| 平陆县| 马边| 博爱县| 石狮市| 花莲县| 洞口县| 乐都县| 莱阳市| 屏东市| 大同市| 临夏市| 怀远县| 宜川县| 华宁县| 巢湖市| 南澳县| 油尖旺区| 阿瓦提县| 太康县| 洛川县| 高台县| 固原市| 沅陵县| 宜昌市| 靖宇县| 梨树县| 聂荣县| 卫辉市| 辽宁省| 富宁县| 巴东县| 邯郸市| 青田县| 方山县| 大关县| 建宁县|