找回密码
 加入
搜索
查看: 10535|回复: 19

[IE类操作] 【已解决】读取网页中javascript脚本生成的动态数据【PS:不用IE.AU3 UDF】

 火.. [复制链接]
发表于 2013-1-22 14:27:32 | 显示全部楼层 |阅读模式
本帖最后由 huangke 于 2013-1-22 15:39 编辑

可能我有强迫症,不想用IE.AU3 UDF,如何读取这个网址(http://www.timedate.cn/worldclock/ti.asp)的内容“2013年1月22日 星期二 14:19:03
如下的代码中没有JS生成的‘2013年1月22日 星期二 14:19:03’之类的文本。。。where is it?


$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET","http://www.timedate.cn/worldclock/ti.asp")
$oHTTP.Send()
$Source = $oHTTP.responseBody
$Source = BinaryToString($Source, 1)
MsgBox(0, '结果:', $Source)
Exit

或者用InetRead

$http = 'http://www.timedate.cn/worldclock/ti.asp' 
$sData = InetRead($http)
$Source = BinaryToString($sData, 1)
MsgBox(0, 0, $Source)


;--------------------------------------------------------------

今天一连问了两个问题,都被大家热心解决了。。。。鸡冻中。。。。


Local $http = 'http://www.timedate.cn/worldclock/ti.asp'
Local $sData = InetRead($http)
Local $Source = BinaryToString($sData, 1)
Local $aSR = StringRegExp($Source, 'n\w+\=(\d+)', 3)
If @error Or UBound($aSR) < 7 Then Exit
Local $Array[8] = ['日', '一', '二', '三', '四', '五', '六', '日']
MsgBox(0, '', StringFormat('%d年%d月%d日 星期%s %02d:%02d:%02d', $aSR[0], $aSR[1], $aSR[2], $Array[$aSR[3]], $aSR[4], $aSR[5], $aSR[6]))

发表于 2013-1-22 14:37:00 | 显示全部楼层
这个应该是获取的系统时间吧~如果只是为了获取时间,那么直接从系统中获取好了~
发表于 2013-1-22 14:46:04 | 显示全部楼层
回复 1# huangke


    虽然没有试过你给的,但不管那种,肯定能得到生成的html源码,然后你正则一下,就可以取出‘年月日’等等数据出来了。
发表于 2013-1-22 14:59:49 | 显示全部楼层
本帖最后由 haijie1223 于 2013-1-22 15:02 编辑

回复 3# happytc


    我看了楼主提供的网页,html源码中是一个js脚本函数获取的时间。不是静态显示的一个字符串。所以没法用正则获取的方法。
发表于 2013-1-22 15:00:25 | 显示全部楼层
回复 2# haijie1223

不是系统时间哦,看网址就可以猜了,是一个时间网,不可能取系统时间来忽悠你吧?
自己改一下系统时间再试就知道了
发表于 2013-1-22 15:03:53 | 显示全部楼层
回复 5# annybaby


    确实是~
发表于 2013-1-22 15:07:37 | 显示全部楼层
Local $http = 'http://www.timedate.cn/worldclock/ti.asp'
Local $sData = InetRead($http)
Local $Source = BinaryToString($sData, 1)
Local $aSR = StringRegExp($Source, 'n\w+\=(\d+)', 3)
If @error Or UBound($aSR) < 7 Then Exit
Local $Array[8] = ['日', '一', '二', '三', '四', '五', '六', '日']
MsgBox(0, '', StringFormat('%d年%d月%d日 星期%s %02d:%02d:%02d', $aSR[0], $aSR[1], $aSR[2], $Array[$aSR[3]], $aSR[4], $aSR[5], $aSR[6]))

评分

参与人数 2金钱 +50 收起 理由
haijie1223 + 30 佩服~
annybaby + 20 学习了~~

查看全部评分

发表于 2013-1-22 15:08:56 | 显示全部楼层
回复 1# huangke

这个强迫症没必要有!
可能是因为你想当然地觉得,可能有些人没有安装IE,但问题是:你下面用的两个函数,没有IE组件一样用不了~~

你下面两种方法都是可以的
因为它是通过函数生成,然后用字符串拼接再通过获取clock对象,用innerHTML来赋值的,直接搜索上面的字符串当然没有了~~
发表于 2013-1-22 15:10:56 | 显示全部楼层
回复 7# afan


    A大一出手就知有没有!
短小精悍~PF!
发表于 2013-1-22 15:18:12 | 显示全部楼层
回复 4# haijie1223


    怎么可能呢?就是动态的,也会生成当时刻的静态网页源代码。他给的code都能获得,把其中的年月日等数据正则提出来就可以了。所以你的‘所以’不成立呀!不信你试
发表于 2013-1-22 15:19:47 | 显示全部楼层
回复  haijie1223


    怎么可能呢?就是动态的,也会生成当时刻的静态网页源代码。他给的code都能获得 ...
happytc 发表于 2013-1-22 15:18


天,我这里怎么显示只有发哥一人回了帖子,等回了上帖一看,原来那么多回帖了,并且A版已经给出正则了
发表于 2013-1-22 15:23:53 | 显示全部楼层
回复 11# happytc

发帖后看一下你自己所在的楼层和上一层,然后,你懂的~~

话说,论坛MS该升级下了
 楼主| 发表于 2013-1-22 15:31:30 | 显示全部楼层
afan 发表于 2013-1-22 15:07



    原来一直都在。。。。只是木有正则出来。。。,为什么在源码里面没有看到呢?
发表于 2013-1-22 15:36:04 | 显示全部楼层
回复 13# huangke

其实用IE也不是很麻烦
$oIE=ObjCreate('internetExplorer.application')
$oIE.navigate('http://www.timedate.cn/worldclock/ti.asp')
Sleep(1000)
MsgBox(0,'当前时间',$oIE.document.getElementById('clock').innerHTML)
 楼主| 发表于 2013-1-22 15:41:00 | 显示全部楼层
回复  huangke

其实用IE也不是很麻烦
annybaby 发表于 2013-1-22 15:36



    嗯嗯,我犯2了。。。哈哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 22:07 , Processed in 0.088028 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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