利用python和httpwatch实现自动监控网页

在做网页访问质量监控时,少不了使用到httpwatch这个工具。httpwatch能记录访问一个网页过程中发生的所有细节,包括网页里所有元素,从DNSlookup、网络连接到第一个数据包发送时间等等(如下图所示),都有详细记录,从而为我们查找问题提供了可视的方式。一般我们都是在出现问题时,就用它分析一下。但如果用它去长期跟跟踪一个网页的访问情况,然后记录入库,这些数据就可为分析问题提供一个基础数据,这也是很有意义的。那么httpwatch能实现这个需求吗。答案是肯定的,使用python就可以轻松实现这个功能。下面代码使用了python自动从一个外部文件读取将要监测的页面,并将一些时间要素打印出来,当然,你还可以实现更强的功能

外部文件格式:

http://www.cites.com/

http://www.cites2.com/page1.html

http://www.cites3.com/page2.html

httpwatch默认支持C#用ruby,python如果要调用它,需要用到win32com这个模块,这个需要安装pywin32,可以到这个地址下载

http://sourceforge.net/projects/pywin32/files/pywin32/

以下是程序实现代码:

#coding=UTF-8
import win32com.client

###定义一个函数,通过它读取外部文件来获得将要检查的URL,以列表返回
def getCiteToCheck(filepath):
 input = open(filepath,‘r‘)
 cites = input.readlines()
 return cites

def checkCite(cites):
#创建一个HttpWatch实例,并打开一个IE进程
 control = win32com.client.Dispatch(‘HttpWatch.Controller‘)
 plugin = control.IE.New()
 plugin.Log.EnableFilter(False)  #httpwatch的可以设置过滤某些条目,这里设为不过滤
 plugin.Record() #激活httpwatch记录
 i=1
 for domain in cites:
  url = domain.strip(‘\n‘)  #因为从文件里读的地址会带有换行符\n,因此需要先去掉,但测试时,不去掉也可以正常打开
  plugin.GotoURL(url)
  control.Wait(plugin,-1)
  #可以将日志记录到一个xml文件里去
  logFileName=‘d:\\log‘+str(i)+‘.xml‘
  plugin.Log.ExportXML(logFileName)
  #也可以直接读log的内容
  print(plugin.Log.Entries.Count)
  for s in plugin.Log.Entries:  #plugin.log.Entries是一个列表,列表元素是一个对象,它对应一个页面里包含的所有URL元素
   print(s.URL)
   print(s.time)
   #s.Timings.Blocked返回的是一个Timing的对象,Timing对象有三个属性:分别是Duration、Started、Valid
   #Duration是指下载一个RUL元素所耗时间,Started是指开始时间
   #Timings含有Blocked、CacheRead、Connect、DNSLookup、Network、Receice、Send、TTFB、Wait几个对象
   print(‘Blocked:‘+str(s.Timings.Blocked.Duration))
   print(‘CacheRead:‘+str(s.Timings.CacheRead.Duration))
   print(‘Connect:‘+str(s.Timings.Connect.Duration))
   print(‘DNSLookup:‘+str(s.Timings.DNSLookup.Duration))
   print(‘Network:‘+str(s.Timings.Network.Duration))
   print(‘Receive:‘+str(s.Timings.Receive.Duration))
   print(‘Send:‘+str(s.Timings.Send.Duration))
   print(‘TTFB:‘+str(s.Timings.TTFB.Duration))
   print(‘Wait:‘+str(s.Timings.Wait.Duration))
  i=i+1
 plugin.Stop()
 plugin.CloseBrowser()
###########

cite_file="cite.txt"
cites = getCiteToCheck(cite_file)
########
print(cites)
for i in [1,2,3,4]:
 checkCite(cites)

时间: 2024-08-02 11:26:14

利用python和httpwatch实现自动监控网页的相关文章

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

利用python爬取海量疾病名称百度搜索词条目数的爬虫实现

实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有可能的疾病可能需要翻很多页才能找到. 实验目的: 为了优化对搜索结果的排序,想到了利用百度搜索后有显示搜索到多少词条,利用这个词条数,可以有效的对疾病排名进行一个优化.从一方面看,某一个疾病在百度的搜索词条数目越多,表示这个词条的信息特别丰富,侧面反映了搜索这个词条的人特别多,从而可以推出这个疾病在

利用python登录网页并自动签到

最近接触python操作网页,甚是方便.很多网站为了粘贴用户,要求每天签到送积分,而我们这么忙哪有空去干这个呀,python可以自动帮我们做这个事情. 实验网站:www.shuobar.com,这是一个提供免费电话的网站,以前在任何时候打电话都免费的,但是现在只能在中午12点之前免费,其他时间打电话要积分,每天签到可以送一些积分 实验方法:windows下pyhton编程 1.用户的登录.www.shuobar.com采用QQ授权登录,不提供帐号密码的登录方式,这给自动签到带来一些不便,首先研究

Linux基础之-利用shell脚本实现自动监控系统服务

目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件:1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-id -i web1); 需要的文件:    1. python邮件发送工具: 2. nfc.sh监控脚本,监控nginx及nfs服务状态,并调用mail发送工具通知用户: 3. nfc-install.sh监控部署脚本,运行在主机,为子机配置文件,执行命令

python监控网页状态

最近公司erp服务器无规律.不间断.时不时抽风,往往都是挂了快个把小时后其它部门的人才打电话过来说服务器挂了.于是用python写了一个简单的网页监控.程序主要监控网页状态码,200为正常,否则视为服务器挂了.每隔70秒查询一次,若发现三次连续的查询中都报错误,则通过预先设定的邮箱发送警告邮件.邮件发送后隔30分钟再次监控设定网页. #coding:utf-8 #author:ljc #python verson 2.7.9 import smtplib import urllib import

有关利用python获取网页, 以及KDD近几年论文标题与摘要链接

最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点儿,就需要点击expand,觉得非常不爽,所以就用python脚本把html标签删掉.. 想到的方法自然是通过python利用正则表达式对ACM的KDD网页进行字符串匹配,获得相应的网页字符串,然后将所有html的标签删除(例如<div></div>等), 将这些标签删除之后,就能够得

Python编程学习之利用selenium分辨出可访问的网页并获取网页内容

一.前言 笔者在前面的文章中收集到一些域名,在这些域名收集完后,并不是每一个域名都有作用,我们要过滤掉访问不了的网站,所以今天学习利用Python中的selenium模块启动Chromium来请求网站,下面记录一下自己的学习过程. 二.学习过程 1.开发工具: Python版本:3.7.1 相关模块: selenium模块 pymysql模块 2.原理简介 从数据库读取出需要访问的域名------利用selenium进行访问域名并获取网站标题.内容长度.截图------存入数据库 from se

利用Python编写网络爬虫下载文章

#coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期>的一些消息" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html"><论电影的七个元素>——关于我对电…</a>' impo

python实现QQ机器人(自动登录,获取群消息,发送群消息)

一次偶然的机会我看见了一个群里的一个QQ号总是根据你所发的消息自动回复,当时很感觉到神奇,我知道可以模拟登录网站,没想到竟然也能模拟登录QQ,首先自己想到的就是如何实现模拟登录PC端的QQ, 开始研究了下,发现QQ所发送的包都很难理解. 于是就转到了网页版的QQ,因为在网页里可以捕获所有的请求从而更好的实现模拟功能! 首先第一步就是打开网页版的qq,打开浏览器的开发者模式 这里可以监控所有的请求! 打开登录界面的的时候 会捕捉到一个GET请求 https://ssl.ptlogin2.qq.co