测试、预发布后用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控制台英汉汉英电子词典
Apr 23 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python的debug实用工具 pdb详解
Jul 12 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
python3.6编写的单元测试示例
Aug 17 Python
Python Django搭建网站流程图解
Jun 13 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
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
js查错流程归纳
2012/05/04 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
python实现的阳历转阴历(农历)算法
2014/04/25 Python
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
python安装以及IDE的配置教程
2015/04/29 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
通过实例了解python property属性
2019/11/01 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
简述python Scrapy框架
2020/08/17 Python
如何使用Pytorch搭建模型
2020/10/26 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
怎么写自荐书范文
2014/02/12 职场文书
目标责任书范本
2014/04/16 职场文书
保护环境建议书400字
2014/05/13 职场文书
管理提升方案
2014/06/04 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
导游词之江西赣州
2019/10/15 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python