测试、预发布后用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实现示例
Aug 26 Python
详解python eval函数的妙用
Nov 16 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
python 重定向获取真实url的方法
May 11 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
Python3爬虫学习入门教程
Dec 11 Python
python实现批量注册网站用户的示例
Feb 22 Python
使用Python实现跳帧截取视频帧
May 31 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
分享7个 Python 实战项目练习
Mar 03 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
Python求离散序列导数的示例
2019/07/10 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
几个数据库方面的面试题
2016/07/01 面试题
采用怎样的方法保证数据的完整性
2013/12/02 面试题
公务员的自我鉴定
2013/10/26 职场文书
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
半年思想汇报
2013/12/30 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
学生会招新宣传语
2015/07/13 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
Hive导入csv文件示例
2022/06/25 数据库