测试、预发布后用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实现的登录和操作开心网脚本分享
Jul 09 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
python爬取淘宝商品详情页数据
Feb 23 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
python pytest进阶之conftest.py详解
Jun 27 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Django权限控制的使用
Jan 07 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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中如何在有限的内存中读取大文件
2013/07/02 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
解决django中ModelForm多表单组合的问题
2019/07/18 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
英国复古服装购物网站:Collectif
2019/10/30 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
单位在职证明范本
2014/01/09 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
端午节活动策划方案
2014/03/09 职场文书
《金子》教学反思
2014/04/13 职场文书
学校党员对照检查材料
2014/08/28 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
三八妇女节寄语
2015/02/27 职场文书
党支部半年考察意见
2015/06/01 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android