找回密码
 加入
搜索
查看: 8348|回复: 27

(谢谢rolaka!!)读取AJAX已经解决!网页动态数据成功!

[复制链接]
发表于 2009-2-12 22:27:38 | 显示全部楼层 |阅读模式
#include 
$oIE = _IECreate("http://auctionlive.aspx?auctionid=11194",0,1,1,0 )
$sText = _IEBodyReadText ($oIE)
MsgBox(0, "Body Text", $sText)
Exit


打开这个网页并读取里面的代码内容,但是不是经常有效的,有时候倒数的时间显示正确,有时候显示:--:--:--
为什么会这样呢?有什么办法可以将倒数的时间准确的读取出来,并在00:00:00的时候按下“出价”这个按钮?

请各位大虾指点迷津。。。

我想在最后的一秒,点下这个按钮,所以必须获得下面的时间,但是没头绪:





用上面的方法得到的数据不准确,有时候可以,有时候就不可以了...



用上面的方法得到的数据不准确,有时候可以,有时候就不可以了...




希望知道获得AJAX页面数据的朋友可以指点一二我,AJAX页面数据的获取,AU3真的办不到吗??

[ 本帖最后由 javarike 于 2009-3-2 09:18 编辑 ]
 楼主| 发表于 2009-2-12 23:14:15 | 显示全部楼层
没有人吗?在线等。。
发表于 2009-2-13 10:33:43 | 显示全部楼层
楼主可以尝试自定义获得时间的函数,可以使用InetGet函数和把下载下来的文件当成文本文件来读取
,点出价按钮的时候有个连接,你把这个连接的地址记录下来就OK
 楼主| 发表于 2009-2-15 10:49:16 | 显示全部楼层
可以具体点,吗?不是那么明白//高手就是高手,
发表于 2009-2-15 11:10:52 | 显示全部楼层
并不是网页一打开
马上就能读到信息的
有时候因为各种因素会有延时
你加延时进去试试看
相信会好一点
我的经验是
不同的机子
不同的网络环境
不同的时间段
需要的延时不同
 楼主| 发表于 2009-2-18 20:49:49 | 显示全部楼层
我觉得楼上觉得的也对.谢谢了...结贴吧
 楼主| 发表于 2009-2-20 10:05:08 | 显示全部楼层
原帖由 35888894 于 2009-2-13 10:33 发表
楼主可以尝试自定义获得时间的函数,可以使用InetGet函数和把下载下来的文件当成文本文件来读取
,点出价按钮的时候有个连接,你把这个连接的地址记录下来就OK


老大,我发现INETGET,下载下来的源文件看不到相关的数据,因为AJAX技术的原因,是不可以这样获得页面的数据的,你可以看看...得到的不是我想要的内容:
 
<p class="Timer" id="Timer_11875">--:--:--</p>
                      <p class="Price">¥<strong id="Price_11875">0.00</strong></p>
                      <p class="User" id="User_11875">------</p>
 楼主| 发表于 2009-2-23 00:23:44 | 显示全部楼层
网上找到AJAX的学习资料,但是看不明白.不知道怎么用.

Microsoft.XMLHttp组件的属性方法
一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普

通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
3、发送指令。
4、等待并接收服务端返回的处理结果。
5、释放XMLHTTP对象

二、XMLHTTP方法:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod: 数据传送方式,即GET或POST。
bstrUrl: 服务网页的URL。
varAsync: 是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser: 用户名,可省略。
bstrPassword:用户口令,可省略。

Send( varBody )
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。

setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值

如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")

三、XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody: 结果返回为无符号整数数组。
responseStream: 结果返回为IStream流。
responseText : 结果返回为字符串。
responseXML: 结果返回为XML格式数据。

四、示例:
以下是代码片段:
< script language="javascript" >
function getDatal(url){
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0");//创建XMLHTTPRequest对象,需MSXML4.0支持
["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
xmlhttp.open("GET",url,false,"",""); //使用HTTP GET初始化HTTP请求
xmlhttp.send(""); //发送HTTP请求并获取HTTP响应
return xmlhttp.responseXML; //获取XML文档
}
< /script >
发表于 2009-2-24 01:28:43 | 显示全部楼层
网站挂了, post的数据是json格式
({"Auction" : [{"Type"    :   "Normal" ,"Status"    :   "Live" ,"Price"    :   0.01 ,"UserName"    :   "Shawn" ,"PlaceBid"    :   0 ,"FreeBid"    :   1 ,"RemainTime"    :   "12:05:47.0005000" ,"FinalPrice"    :   0.01 ,"Active"    :   "" ,"ID"    :   12225 }]})
,还有类似的网站么,没法做下去了
发表于 2009-2-24 01:29:52 | 显示全部楼层
post
$oXMLHTTP = ObjCreate("MSXML2.XMLHTTP")
$oXMLHTTP.Open("post","http://www.happyd.cn/ajax/auctionhandler.ashx",false)
$oXMLHTTP.setRequestHeader("Cache-Control", "no-cache")
$oXMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded")  
$oXMLHTTP.setRequestHeader("Referer","http://www.happyd.cn/")
$oXMLHTTP.setRequestHeader("Content-Length","40")
$oXMLHTTP.Send("AuctionID=yc75Ydnv6RZ9zm0bZ7p%2fXQ%3d%3d")
FileWrite("json.txt",StringStripWS($oXMLHTTP.responseText, 4))
 楼主| 发表于 2009-2-25 08:40:41 | 显示全部楼层
原帖由 xayle 于 2009-2-24 01:28 发表
网站挂了, post的数据是json格式
({"Auction" : [{"Type"    :   "Normal" ,"Status"    :   "Live" ,"Price"    :   0.01 ,"UserName"    :   "Shawn" ,"PlaceBid"    :   0 ,"FreeBid"    :   1 ,"RemainTime"    ...


当然有,你看看这个吧:

http://www.swoopo.com/
发表于 2009-2-25 09:31:40 | 显示全部楼层
既然是ajax 那你可以用dom对象来获取 不过 操作Body一定要等loading全部结束才可以 推荐利用id来找局部
 楼主| 发表于 2009-2-25 13:00:12 | 显示全部楼层
原帖由 rolaka 于 2009-2-25 09:31 发表
既然是ajax 那你可以用dom对象来获取 不过 操作Body一定要等loading全部结束才可以 推荐利用id来找局部


取不到的....你可以试试..
发表于 2009-2-25 18:01:27 | 显示全部楼层

#include <IE.au3>
$oIE = _IECreate ("http://www.swoopo.com/")
$oDoc = _IEDocGetObj($oIE)
MsgBox(0, "", $oDoc.getElementById("counter_index_page_156171").innerhtml)


哪儿取不到了- - 取SPAN的啊

流程如下:
取得所有div的集合 -> 过滤id 取得需要的div存入数组 -> 利用正则取出显示时间的SPANid -> 取SPAN的值

[ 本帖最后由 rolaka 于 2009-2-25 18:05 编辑 ]
发表于 2009-2-25 18:02:45 | 显示全部楼层
原帖由 xayle 于 2009-2-24 01:29 发表
post
$oXMLHTTP = ObjCreate("MSXML2.XMLHTTP")
$oXMLHTTP.Open("post","http://www.happyd.cn/ajax/auctionhandler.ashx",false)
$oXMLHTTP.setRequestHeader("Cache-Control", "no-cache")
$oXMLHTTP.setReque ...

AuctionID貌似不是固定的...那?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-20 08:14 , Processed in 0.082873 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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