找回密码
 加入
搜索
查看: 7632|回复: 12

[系统综合] (已解决)autoit采集网页数据(非IE浏览器打开)

  [复制链接]
发表于 2014-3-28 15:54:26 | 显示全部楼层 |阅读模式
本帖最后由 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[0] & @CRLF)



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-4-1 09:46:26 | 显示全部楼层
都木有人回答吗
发表于 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
好像直接检测浏览器的版本,然后去对应就差不多了
 楼主| 发表于 2014-4-4 11:28:03 | 显示全部楼层
回复 3# 骗子

明白了 那有其他的函数吗 我想用SEND模拟鼠标操作 但是不知道相对位置怎么获取
发表于 2014-4-4 11:42:43 | 显示全部楼层
 楼主| 发表于 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[0])
                Exit
        EndIf
WEnd
 楼主| 发表于 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[0])
                Exit
        EndIf
这几句就是从复制的内容中匹配出来结果的,我没有谷歌浏览器,用FF测试没问题
 楼主| 发表于 2014-4-9 14:05:54 | 显示全部楼层
回复 10# 骗子

试了一下 IE可以,google chrome不行.
发表于 2014-4-9 15:02:19 | 显示全部楼层
自己看看ClipGet() 里面是什么内容,有没有需要的东西,有的话自己正则取出来
发表于 2017-2-24 09:56:44 | 显示全部楼层
請問有沒有辦法背景執行?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 05:24 , Processed in 0.076244 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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