请教个简单的从IE网页读取指定区域回显gui的问题,在不打开浏览器的情况下
也有点难度,我每次获取都只是获取到脚本中的读取中
郁闷
地址 http://open.baidu.com/static/time/beijingtime.html
想读取图片中的区域,即 从<div id="bjt" style="margin-top:8px"> 这一部分读取 时钟是flash来的
clock.js文件里有地址 http://www.baidu.com/swf/aladdin/clock/clock.swf 我用的不是百度的北京时间。。。 直接在GUI上显示 它的FLASH就可以了还要提取干什么啊 我也正想提问,类似,提取指定网页中的内容,在不打开情况下!
或怎样把网页上面显示的所有文字保存到一个文件中,以便读取 都是答非所问,flash并非重点,重点是字,另外可以不用inetget,用gui去显示特定网页脚本, InetGet 是读取网页的源文件,我是想读取网页文件,所见即所得的那些! 本帖最后由 guland 于 2010-1-15 00:01 编辑
:face (33):凑合用吧,哈哈
#include <GUIConstantsEx.au3>
#include <IE.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 337, 175, 326, 333)
$oIE = _IECreateEmbedded()
GUICtrlCreateObj($oIE, 6, 6, 175, 70)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_time()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
func _time()
If FileExists(@TempDir&"\time.htm") Then
FileDelete(@TempDir&"\time.htm")
EndIf
FileWriteLine(@TempDir&"\time.htm","<html>"&@CRLF&"<head>")
FileWriteLine(@TempDir&"\time.htm","<head>")
FileWriteLine(@TempDir&"\time.htm",'<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />')
FileWriteLine(@TempDir&"\time.htm","<title></title>")
FileWriteLine(@TempDir&"\time.htm","</head>")
FileWriteLine(@TempDir&"\time.htm",'<body scroll="no">')
FileWriteLine(@TempDir&"\time.htm",'<iframe name="I1" marginwidth="0" marginheight="0" width="240" vspace="-180" hspace="-50" align="middle" height="240" scrolling="no" border="0" frameborder="0" src=http://open.baidu.com/static/time/beijingtime.html ></iframe>')
FileWriteLine(@TempDir&"\time.htm","</body>")
FileWriteLine(@TempDir&"\time.htm","</html>")
_IENavigate($oIE,@TempDir&"\time.htm")
EndFunc
学习了,楼上的能实现,但好象不能满足楼主。 借10#代码用下,去掉临时文件~#include <IE.au3>
$Form1 = GUICreate("Form1", 337, 175, 326, 333)
$oIE = _IECreateEmbedded()
GUICtrlCreateObj($oIE, 6, 6, 175, 70)
_IENavigate($oIE, '')
GUISetState()
_time()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Func _time()
$s_html = '<html><iframe name="I1" marginwidth="0" marginheight="0" width="240" vspace="-180" hspace="-50" align="middle" height="240" scrolling="no" border="0" frameborder="0" src=http://open.baidu.com/static/time/beijingtime.html ></iframe></html>'
_IEBodyWriteHTML($oIE, $s_html)
$oIE.Document.body.Scroll = 'no'
EndFunc ;==>_time 本帖最后由 afan 于 2010-1-15 02:35 编辑
不过007的目的可能是截取网页片段吧
看了下,要截取的比要摘掉的多得多哦…… 不如摘掉不要显示的 这个页面简单的分析了下
页面中有一个计时器,Browser 完成页面载入后
开始从服务器上获取时间( 这里返回的是一个long型的毫秒数 ) 来始初始计时器(DOM)
Start working !
为了方便说明 去掉了多余标记 time.htm clock.js 放C:\#include <IE.au3>
;这是取的节点数据
$oIE = _IECreate("file:///C:/time.htm")
Sleep("50");DOM响应
$oDiv = _IEGetObjById ($oIE, "bjt_info")
$oDivT = _IEGetObjById ($oIE, "time")
$oDivD = _IEGetObjById ($oIE, "date")
MsgBox(0,"这是取的节点数据--",'获取数据:'&_IEPropertyGet($oDiv, "innertext")&@CRLF _
&'获取时间:'&_IEPropertyGet($oDivT, "innertext")&@CRLF _
&'获取日期:'&_IEPropertyGet($oDivD, "innertext")&@CRLF _
)
Sleep(500)
MsgBox(0,"","下面是方法二")
;另类方法直接获取服务器数据
;$return=_xmlhttp(_getdata())
MsgBox(0,"返回的时间是long型的毫秒数 这里需要你来格式化",_xmlhttp(_getdata())); 返回的时间是long型的毫秒数 这里需要你来格式化
Func _getdata()
Local $code
$code &= 'function _getdata()' & @CRLF
$code &= '{' & @CRLF
$code &= 'var now = new Date()' & @CRLF
$code &= "var urltemp = 'http://open.baidu.com/app?module=beijingtime&t='+now.getTime()" & @CRLF
$code &= 'return urltemp' & @CRLF
$code &= '}' & @CRLF
$nJS = ObjCreate("ScriptControl")
$nJS.language = "JavaScript"
$nJS.addcode($code)
$_getdata = $nJS.Run("_getdata")
Return $_getdata
EndFunc
Func _xmlhttp($url)
$oXHR = ObjCreate("MSXml2.XMLHTTP")
$oXHR.open("post", $url, False)
$oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oXHR.send()
$iResponseText = BinaryToString($oXHR.ResponseBody)
Return $iResponseText
EndFunc ;==>_xmlhttp 先占个位 分析代码 稍后 发
jhwl 发表于 2010-1-15 10:43 http://www.autoitx.com/images/common/back.gif
等待佳作 这个对我来说有点难啊。学习一下 学习学习!!!
页:
[1]
2