监控网页文本更新,并弹框报警
本帖最后由 elexy 于 2012-6-15 14:43 编辑http://blog.sina.com.cn/s/blog_4d89b8340102dxro.html
此地址为财经博客,博主隔一会就会更新内容
思路: 每隔一分钟获取一下网页内容
监控两种字段1. 包含 5分钟高点2. 包含 5分钟低点
只要一出现符合条件字段 就将 那一整行内容(加上前面的时间,以及后面有可能带的各种字符) msgbox显示出来
模拟结果:应该弹出两次MSGBOX
9:52 5分钟高点,级别小
11:10 5分钟低点,级别小
这个需要用到正则,小弟不会,特请众高手帮忙搞出一段高效精简代码。
____________________________________________________________
11楼给出的方案,在获取更新时间方面没有问题,但是获取内容方面还需要完善,不能做到实时监控 本帖最后由 bdancerlc 于 2012-6-13 13:39 编辑
按照 楼上 高人 给的思路,简单做了一下! ...细节自己修改!...
#include <Array.au3>
Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.open('GET','http://blog.sina.com.cn/s/blog_4d89b8340102dxro.html')
$oHTTP.Send()
Global $FirstTime = $oHTTP.getResponseHeader('Last-Modified')
MsgBox(64,'首次检测时间:',$FirstTime)
$TEXT_BACK = BinaryToString($oHTTP.responsebody,4)
$Text = StringRegExp($TEXT_BACK,'\d+:\d+\s*5分钟[高低]点.*',3)
$Text = _ArrayUnique($Text)
_ArrayDisplay($Text)
AdlibRegister ( "_GET_New" , 1000*10) ; 定时 10秒
While 1
Sleep(100)
WEnd
Func _GET_New()
$oHTTP.open('GET','http://blog.sina.com.cn/s/blog_4d89b8340102dxro.html')
$oHTTP.Send()
Local $LastTime = $oHTTP.getResponseHeader('Last-Modified')
If $LastTime <> $FirstTime Then
$TEXT_BACK = $oHTTP.responseText
$Text = StringRegExp($TEXT_BACK,'\d+:\d+\s*5分钟[高低]点.*',3)
$Text = _ArrayUnique($Text)
_ArrayDisplay($Text)
$FirstTime = $LastTime
EndIf
EndFunc
看似很简单嘛 金太少,银太少,这样的问题不会搞。 LS的是在气人吗 那个网页的源码在正文数据方面复制填充了 293 份… 水分十足哦,浪费人家的流量 那么简单 直接抓包看响应头
这个页面html是静态页面 因为有返回Content-Length 所以不是动态 如果不判断文件更新时间 光判断这个文件大小就能知道是否已经更新网站内容
响应头:Last-Modified 文件最后生成的时间 这是WEB服务直接返回的 直接判断这个OK 如果你用浏览器访问 第一次会接收这个响应头信息并保存到缓存文件中 当你第二次访问时 你的浏览器会发送一个叫IF_MODIFIED_SINCE的请求头 这个请求头就是上次访问得到的Last-Modified的值 服务器会对比这个值 如果一样 就返回304 Not Modified给浏览器 浏览器这时候就直接读取缓存 而无需服务器输出html
还有一个叫ETag 和Last-Modified一样 不同的是ETag是可自定义的 一般是唯一标识 请求时发送的是IF_NONE_MATCH
以上说的这三个 都是静态html的页面才有效 如果是动态的 比如.php后缀的(或者他已经伪静态)时无效 本帖最后由 bdancerlc 于 2012-6-12 23:20 编辑
楼主稍微修改一下,加个时钟,定时进行操作应该就搞定了,这里细节就不处理了!...
正则:\d+:\d+\s*5分钟[高低]点.*
#include <Array.au3>
$TEXT_BACK = BinaryToString(InetRead('http://blog.sina.com.cn/s/blog_4d89b8340102dxro.html',1+8),4)
$Text = StringRegExp($TEXT_BACK,'\d+:\d+\s*5分钟[高低]点.*',3)
_ArrayDisplay($Text)
回复 5# afan
水分确实很足,同样的数据,硬是出现了600+次...哈哈哈
{:face (245):} 学习了。感谢各位大大 回复 7# bdancerlc
这破网页水份太多了,有没有办法筛选出精华呀? 谢谢 bdancerlc ! 本帖最后由 jtzxgfy 于 2012-6-14 08:50 编辑
请继续完善
bdancerlc 的代码显示:
9:525分钟高点& # 65292;级别小
能改成 好看一点的窗口显示,且显示成:9:52 5分钟高点 级别小 (不要显示 "& # 65292;")
就更好了
谢谢! 如何提取首页 http://blog.sina.com.cn/xuxiaoming8 中的 最新的
****日盘中同步分析提示 的网址? 太难了 的了这网址用bdancerlc 的监控代码 look looolook looolook looo
页:
[1]
2