测试、预发布后用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使用scrapy解析js示例
Jan 23 Python
python访问系统环境变量的方法
Apr 29 Python
开源Web应用框架Django图文教程
Mar 09 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
python开发人人对战的五子棋小游戏
May 02 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
Python对列表排序的方法实例分析
2015/05/16 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
英智兴达软件测试笔试题
2016/10/12 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
销售找工作求职信
2013/12/20 职场文书
单位提档介绍信
2014/01/17 职场文书
网络编辑职责
2014/03/01 职场文书
感恩节活动策划方案
2014/05/16 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
项目合作意向书
2015/05/08 职场文书
看上去很美观后感
2015/06/10 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js