測(cè)試、預(yù)發(fā)布后用python檢測(cè)網(wǎng)頁(yè)是否有日常鏈接
大略思路是:用python寫一個(gè)腳本來(lái)分析網(wǎng)頁(yè)里的所有url,看是否包含日常的鏈接,然后把腳本放到crontab里跑定時(shí)任務(wù),10分鐘跑一次檢查。如果發(fā)現(xiàn)非法鏈接,就發(fā)告警郵件給相關(guān)人員。腳本代碼100行左右,比較好理解,貼上代碼。
本來(lái)想用beautifulsoup,不過(guò)考慮到安裝三方庫(kù)麻煩,所以還是用自帶的sgmllib來(lái),不需要關(guān)心庫(kù)。發(fā)郵件函數(shù)沒(méi)有實(shí)現(xiàn),根據(jù)各自的smtp服務(wù)器實(shí)現(xiàn)以下即可。
#!/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:
#沒(méi)檢查到daily鏈接,不處理
log('check: not find daily url')
#檢查judetail
dailyUrls=checkUrl(detailUrl, True)
if dailyUrls:
#檢查到daily鏈接,發(fā)送告警郵件
log('check: find daily url')
sendMail()
else:
#沒(méi)檢查到daily鏈接,不處理
log('check: not find daily url')
if __name__ == '__main__':
main()
相關(guān)文章
Python+Pygame實(shí)現(xiàn)海洋之神大冒險(xiǎn)游戲
這篇文章主要介紹了如何利用Python+Pygame自制一個(gè)海洋之神大冒險(xiǎn)游戲。規(guī)則是在海里收集魚骨頭,有些魚骨頭可以轉(zhuǎn)化為武器,用來(lái)攻擊敵人,感興趣的可以了解一下2022-08-08
使用PyTorch實(shí)現(xiàn)限制GPU顯存的可使用上限
從?PyTorch?1.4?版本開始,引入了一個(gè)新的功能,可以允許用戶為特定的?GPU?設(shè)備設(shè)置進(jìn)程可使用的顯存上限比例,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧2024-03-03
python之ImportError:模塊引入異常問(wèn)題
這篇文章主要介紹了python之ImportError:模塊引入異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Pycharm同步遠(yuǎn)程服務(wù)器調(diào)試的方法步驟
這篇文章主要介紹了Pycharm同步遠(yuǎn)程服務(wù)器調(diào)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
通過(guò)實(shí)例了解Python str()和repr()的區(qū)別
這篇文章主要介紹了通過(guò)實(shí)例了解Python str()和repr()的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Python實(shí)現(xiàn)語(yǔ)音識(shí)別Whisper的使用示例
Whisper是由OpenAI基于Python開發(fā)的能夠識(shí)別多國(guó)語(yǔ)言的語(yǔ)音識(shí)別模型,本文主要介紹了Python實(shí)現(xiàn)語(yǔ)音識(shí)別Whisper的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
python中關(guān)于日期時(shí)間處理的問(wèn)答集錦
python中有關(guān)日期時(shí)間處理的問(wèn)答集錦,有需要的朋友不妨參考下2013-03-03
使用python+Flask實(shí)現(xiàn)日志在web網(wǎng)頁(yè)實(shí)時(shí)更新顯示
日志是一種可以追蹤某些軟件運(yùn)行時(shí)所發(fā)生事件的方法,下面這篇文章主要給大家介紹了關(guān)于使用python+Flask實(shí)現(xiàn)日志在web網(wǎng)頁(yè)實(shí)時(shí)更新顯示的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
python的即時(shí)標(biāo)記項(xiàng)目練習(xí)筆記
這篇文章主要介紹了python的即時(shí)標(biāo)記項(xiàng)目練習(xí)筆記,本文是閱讀《python基礎(chǔ)教程》一書的動(dòng)手實(shí)踐項(xiàng)目,需要的朋友可以參考下2014-09-09

