测试、预发布后用python检测网页是否有日常链接
大略思路是:用python写一个脚本来分析网页里的所有url,看是否包含日常的链接,然后把脚本放到crontab里跑定时任务,10分钟跑一次检查。如果发现非法链接,就发告警邮件给相关人员。脚本代码100行左右,比较好理解,贴上代码。
本来想用beautifulsoup,不过考虑到安装三方库麻烦,所以还是用自带的sgmllib来,不需要关心库。发邮件函数没有实现,根据各自的smtp服务器实现以下即可。
#!/usr/bin/envpython #coding:UTF-8 importurllib2 fromsgmllibimportSGMLParser importsmtplib importtime #fromemail.mime.textimportMIMEText #frombs4importBeautifulSoup #importre classUrlParser(SGMLParser): urls=[] defdo_a(self,attrs): '''''parsetaga''' forname,valueinattrs: ifname=='href': self.urls.append(value) else: continue defdo_link(self,attrs): '''''parsetaglink''' forname,valueinattrs: ifname=='href': self.urls.append(value); else: continue defcheckUrl(checkurl,isDetail): '''''检查checkurl对应的网页源码是否有非法url''' parser=UrlParser() page=urllib2.urlopen(checkurl) content=page.read() #content=unicode(content,"gb2312").encode("utf8") parser.feed(content) urls=parser.urls dailyUrls=[] detailUrl="" forurlinurls: if'daily'inurl: dailyUrls.append(url); ifnotdetailUrlandnotisDetailand'www.bc5u.com'inurl: detailUrl=url page.close() parser.close() ifisDetail: returndailyUrls else: returndailyUrls,detailUrl defsendMail(): '''''发送提醒邮件''' pass deflog(content): '''''记录执行日志''' logFile='checkdailyurl.log' f=open(logFile,'a') f.write(str(time.strftime("%Y-%m-%d%X",time.localtime()))+content+'\n') f.flush() f.close() defmain(): '''''入口方法''' #检查ju url="www.bc5u.com" dailyUrls,detailUrl=checkUrl(url,False) ifdailyUrls: #检查到daily链接,发送告警邮件 sendMail() log('check:finddailyurl') else: #没检查到daily链接,不处理 log('check:notfinddailyurl') #检查judetail dailyUrls=checkUrl(detailUrl,True) ifdailyUrls: #检查到daily链接,发送告警邮件 log('check:finddailyurl') sendMail() else: #没检查到daily链接,不处理 log('check:notfinddailyurl') if__name__=='__main__': main()