lorrell 发表于 2014-3-28 15:54:26

(已解决)autoit采集网页数据(非IE浏览器打开)

本帖最后由 lorrell 于 2014-4-16 09:53 编辑


1、比如说用chrome浏览器打开这个网站http://html5test.com/(如上图),我想要获取打开网页之后的score505这个结果值,保存到文本里,应该采用哪个函数呢;下边这个代码获取的结果值为什么不对呢

Local $hDownload = InetGet("http://html5test.com/", @DesktopDir & '\html5test.html', 1, 1)
Do
   Sleep(250)
Until InetGetInfo($hDownload, 2)
Local $aData = InetGetInfo($hDownload)
InetClose($hDownload)
FileWriteLine("score.txt","Score: " & $aData & @CRLF)



2、如果不固定浏览器,两个浏览器同时打开这个网站,然后把SCORE值自动保存到文本里,可以实现吗?

lorrell 发表于 2014-4-1 09:46:26

{:face (396):}都木有人回答吗

骗子 发表于 2014-4-4 09:19:59

InetGetInfo
返回一个由InetGet()函数返回的句柄的详细信息.


InetGetInfo( [ 句柄 [, 索引 ]] )


参数
句柄 [可选参数] 由 InetGet() 函数返回的句柄.
索引 [可选参数] 要返回的数据索引. 如果索引为 -1 ,将返回包含下列所有值的数组.
0 - 读取字节数 (这是一个在下载时不断更新的数字).
1 - 要下载的文件的大小(不一定有效).
2 - 如果值为 True 则下载完成, False 为下载正在进行.
3 - 如果值为 True 则下载成功完成. False 为下一数据成员将会是非0.
4 - 下载错误值. 这些值可能是任意的,判断这些值是不是非0来决定是不是发生了错误.
5 - 下载扩展值. 这个值可能是任意的,并且这个值只对 AutoIt 开发者有用.

你那个是下载的文件大小

骗子 发表于 2014-4-4 09:22:38

http://html5test.com/results/desktop.html
好像直接检测浏览器的版本,然后去对应就差不多了

lorrell 发表于 2014-4-4 11:28:03

回复 3# 骗子

明白了 那有其他的函数吗 我想用SEND模拟鼠标操作 但是不知道相对位置怎么获取

骗子 发表于 2014-4-4 11:42:43

http://www.autoitx.com/forum.php?mod=viewthread&tid=17882&highlight=Au3.WProbe

lorrell 发表于 2014-4-4 16:32:55

回复 6# 骗子

多谢~~下边是我新写的 目前可以实现自动保存 但是在选取"YOUR BROWSER SCORES 505 OUT OF 555 POINTS You are using Chrome 33 on Windows 8"的位置上 还是有些偏差ShellExecute('C:\Program Files (x86)\Google\Chrome\Application\chrome.exe','http://www.html5test.com')
Sleep(8000)
MouseMove(211,324)
MouseDown("left")
MouseMove(482,432)
MouseUp("left")
Sleep(1000)
Send('^c')
ShellExecute('score.txt')
Sleep(1000)
Send("^v")
WinClose('score.txt - 记事本')
WinWaitActive("记事本","保存")
Send("!s")

骗子 发表于 2014-4-8 15:19:24

回复 7# lorrell
ClipPut('')
ShellExecute('"D:\Program Files\FF\FirefoxPortable.exe"', 'http://www.html5test.com')
Sleep(5000)
While 1
        Sleep(500)
        WinActivate('HTML5test')
        Send('^a')
        Send('^c')
        $asd = StringRegExp(ClipGet(), 'scores (\d+) out', 3)
        If Not @error Then
                FileWrite('score.txt', $asd)
                Exit
        EndIf
WEnd

lorrell 发表于 2014-4-9 09:41:54

回复 8# 骗子

你这代码 运行不出来诶~~就只是把整个页面复制了 并没有复制单独的SCORE那句结果啊

骗子 发表于 2014-4-9 10:41:09

$asd = StringRegExp(ClipGet(), 'scores (\d+) out', 3)
      If Not @error Then
                FileWrite('score.txt', $asd)
                Exit
      EndIf
这几句就是从复制的内容中匹配出来结果的,我没有谷歌浏览器,用FF测试没问题

lorrell 发表于 2014-4-9 14:05:54

回复 10# 骗子

试了一下 IE可以,google chrome不行.

骗子 发表于 2014-4-9 15:02:19

自己看看ClipGet() 里面是什么内容,有没有需要的东西,有的话自己正则取出来

ipmitool 发表于 2017-2-24 09:56:44

請問有沒有辦法背景執行?
页: [1]
查看完整版本: (已解决)autoit采集网页数据(非IE浏览器打开)