找回密码
 加入
搜索
查看: 12576|回复: 18

[IE类操作] 监控网页文本更新,并弹框报警

 火.. [复制链接]
发表于 2012-6-12 14:53:22 | 显示全部楼层 |阅读模式
悬赏88金钱已解决
本帖最后由 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楼给出的方案,在获取更新时间方面没有问题,但是获取内容方面还需要完善,不能做到实时监控

最佳答案

查看完整内容

按照 楼上 高人 给的思路,简单做了一下! ...细节自己修改!... [au3] #include 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($TEX ...
发表于 2012-6-12 14:53:23 | 显示全部楼层
本帖最后由 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

发表于 2012-6-12 15:12:27 | 显示全部楼层
看似很简单嘛
发表于 2012-6-12 20:43:04 | 显示全部楼层
金太少,银太少,这样的问题不会搞。
发表于 2012-6-12 22:33:11 | 显示全部楼层
LS的是在气人吗
发表于 2012-6-12 22:56:57 | 显示全部楼层
那个网页的源码在正文数据方面复制填充了 293 份… 水分十足哦,浪费人家的流量
发表于 2012-6-12 23:07:15 | 显示全部楼层
那么简单 直接抓包看响应头
这个页面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后缀的(或者他已经伪静态)时无效

评分

参与人数 1金钱 +10 收起 理由
bdancerlc + 10 这个思路正解...

查看全部评分

发表于 2012-6-12 23:13:27 | 显示全部楼层
本帖最后由 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)
发表于 2012-6-12 23:21:55 | 显示全部楼层
回复 5# afan


    水分确实很足,同样的数据,硬是出现了600+次...哈哈哈
发表于 2012-6-13 00:22:36 | 显示全部楼层
学习了。感谢各位大大
 楼主| 发表于 2012-6-13 08:21:56 | 显示全部楼层
回复 7# bdancerlc

这破网页水份太多了,有没有办法筛选出精华呀?
发表于 2012-6-14 08:00:54 | 显示全部楼层
谢谢 bdancerlc  !
发表于 2012-6-14 08:48:07 | 显示全部楼层
本帖最后由 jtzxgfy 于 2012-6-14 08:50 编辑

请继续完善
bdancerlc 的代码显示:
9:525分钟高点& # 65292;级别小

能改成 好看一点的窗口显示,且显示成:9:52 5分钟高点 级别小  (不要显示 "& # 65292;")
就更好了
   谢谢!
发表于 2012-6-14 11:56:42 | 显示全部楼层
如何提取首页 http://blog.sina.com.cn/xuxiaoming8 中的 最新的
****日盘中同步分析提示 的网址? 太难了 的了这网址用bdancerlc 的监控代码
发表于 2012-6-14 19:28:19 | 显示全部楼层
look looolook looolook looo

评分

参与人数 1贡献 -2 收起 理由
afan -2

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-13 02:01 , Processed in 0.082050 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表