测试、预发布后用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编写简单网络爬虫抓取视频下载资源
Nov 04 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
python删除不需要的python文件方法
Apr 24 Python
python实现决策树ID3算法的示例代码
May 30 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
Scrapy实现模拟登录的示例代码
Feb 21 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程序内部post数据的方法
2015/03/31 PHP
javascript实现的listview效果
2007/04/28 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python反射用法实例简析
2017/12/22 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python实现的Iou与Giou代码
2020/01/18 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
业务助理岗位职责
2013/11/18 职场文书
我未来的职业规划范文
2014/01/11 职场文书
七一党建活动方案
2014/01/28 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
计划生育工作汇报
2014/10/28 职场文书
小班下学期个人总结
2015/02/12 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python