测试、预发布后用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解析xml文件实例分享
Dec 04 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
python实现数独算法实例
Jun 09 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python实现的堆排序算法示例
Apr 29 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Django实现跨域请求过程详解
Jul 25 Python
基于Django实现日志记录报错信息
Dec 17 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
适合Python初学者的一些编程技巧
Feb 12 Python
python数据类型强制转换实例详解
Jun 22 Python
python使用自定义钉钉机器人的示例代码
Jun 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
yii操作session实例简介
2014/07/31 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
简单的js表单验证函数
2013/10/28 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python2.7到3.x迁移指南
2018/02/01 Python
Python变量访问权限控制详解
2019/06/29 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
优秀求职信范文分享
2013/12/19 职场文书
结婚喜宴主持词
2014/03/14 职场文书
个人总结格式范文
2015/03/09 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python