测试、预发布后用python检测网页是否有日常链接


Posted in Python onJune 03, 2014

在大的互联网公司干技术的基本都会碰到测试、预发布、线上这种多套环境的,来实现测试和线上正式环境的隔离,这种情况下,就难免会碰到秀逗了把测试的链接发布到线上的情况,一般这种都是通过一些测试的检查工具来检查链接来规避风险的。前两天跟了一个问题也是这个情况,开发疏忽把日常url发布到线上了。但是测试那边没有自动化的监控工具,导致没有及时发现,由于最近正好在看python,后来处理完回家就想用python做个简单的监控。

大略思路是:用python写一个脚本来分析网页里的所有url,看是否包含日常的链接,然后把脚本放到crontab里跑定时任务,10分钟跑一次检查。如果发现非法链接,就发告警邮件给相关人员。脚本代码100行左右,比较好理解,贴上代码。

本来想用beautifulsoup,不过考虑到安装三方库麻烦,所以还是用自带的sgmllib来,不需要关心库。发邮件函数没有实现,根据各自的smtp服务器实现以下即可。

#!/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对应的网页源码是否有非法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(): 
'''''发送提醒邮件''' 
pass 
def log(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() 
def main(): 
'''''入口方法''' 
#检查ju 
url = "www.bc5u.com" 
dailyUrls,detailUrl=checkUrl(url, False) 
if dailyUrls: 
#检查到daily链接,发送告警邮件 
sendMail() 
log('check: find daily url') 
else: 
#没检查到daily链接,不处理 
log('check: not find daily url') 
#检查judetail 
dailyUrls=checkUrl(detailUrl, True) 
if dailyUrls: 
#检查到daily链接,发送告警邮件 
log('check: find daily url') 
sendMail() 
else: 
#没检查到daily链接,不处理 
log('check: not find daily url') 
if __name__ == '__main__': 
main()
Python 相关文章推荐
Python中input和raw_input的一点区别
Oct 21 Python
Python中字符串的修改及传参详解
Nov 30 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
Django之模型层多表操作的实现
Jan 08 Python
python微信撤回监测代码
Apr 29 Python
Python笔试面试题小结
Sep 07 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
Django url 路由匹配过程详解
Jan 22 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python中的CURL PycURL使用例子
Jun 01 #Python
Python实现多线程下载文件的代码实例
Jun 01 #Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 #Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 #Python
2款Python内存检测工具介绍和使用方法
Jun 01 #Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 #Python
python应用程序在windows下不出现cmd窗口的办法
May 29 #Python
You might like
ASP知识讲座四
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
smarty自定义函数用法示例
2016/05/20 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
python调用shell的方法
2013/11/20 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
精伦电子Java笔试题
2013/01/16 面试题
新年抽奖获奖感言
2014/03/02 职场文书
食品安全工作方案
2014/05/07 职场文书
公司催款律师函
2015/05/27 职场文书
入党后的感想
2015/08/10 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP