AUTOIT3中_IEImgGet战国collectionn可以提取网页PNG图片验证码么,我想放到GUI去,可是总提取不到

网页图片获取 - 『 提问交流 』 -
AUTOIT CN AutoIt中文论坛|acn|au3|软件汉化 - 分享您的技术!
帖子201&精华0&积分151&威望10 点&金钱1024 块&贡献30 分&阅读权限20&在线时间154 小时&注册时间&最后登录&
网页图片获取
本帖最后由 liangxm 于
10:48 编辑
$oIE1 = _IECreate($url)
$oImg = _IEImgGetCollection($oIE1, 0)
If $oImg.src =$url Then
& && &&&$oPic = $oIE1.Document.body.createControlRange()
& && &&&$oPic.Add($oImg)
& && &&&$oPic.execCommand(&Copy&);;复制图片到剪贴板
& && &&&$img = ClipGet();;从剪贴板得到图片
通过_IECreate,_IEImgGetCollection(返回一个文档内IMG标签的对象变量集合)的方式获取网页里面的图片
$xmlhttp = ObjCreate(&WinHttp.WinHttpRequest.5.1&)
$xmlhttp.open(&GET&, $url, False)
这样的方式该如何获取图片呢?
帖子323&精华0&积分162&威望0 点&金钱1 块&贡献0 分&阅读权限20&在线时间156 小时&注册时间&最后登录&
多用搜索。。。
帖子590&精华0&积分266&威望0 点&金钱7 块&贡献-29 分&阅读权限30&在线时间347 小时&注册时间&最后登录&
还有个复到到剪贴板中。。。
帖子201&精华0&积分151&威望10 点&金钱1024 块&贡献30 分&阅读权限20&在线时间154 小时&注册时间&最后登录&
& & 搜了,暂时没找到用ObjCreate(&WinHttp.WinHttpRequest.5.1&)的方法,能给个链接看看?
帖子201&精华0&积分151&威望10 点&金钱1024 块&贡献30 分&阅读权限20&在线时间154 小时&注册时间&最后登录&
& & 嗯,我只是截取一段而已
_GDIPlus_Startup()
_ClipBoard_Open(0)
$iVerifyPics = _ClipBoard_GetDataEx($CF_BITMAP);;从剪贴板获取图片句柄
$iVerifyPics = _GDIPlus_BitmapCreateFromHBITMAP($iVerifyPics);;创建图片
;~ _ScreenCapture_Capture(@ScriptDir & &\GDIPlus_Image2.jpg&, 413, 137, 594, 192)
_GDIPlus_ImageSaveToFile($iVerifyPics, @ScriptDir&&& &\&&$i&&.bmp&);;;保存图片到当前脚本目录
_ClipBoard_Close()
帖子94&精华0&积分47&威望0 点&金钱1 块&贡献0 分&阅读权限10&在线时间19 小时&注册时间&最后登录&
不错啊。很实用啊。
帖子3107&精华0&积分2854&威望290 点&金钱15256 块&贡献720 分&阅读权限150&在线时间6791 小时&注册时间&最后登录&
楼主是不是想下载一张图片~~
分手说不出来
海鸟跟鱼相爱
只是一场意外
我们的爱差异一直存在
风中尘埃竟累积成伤害
帖子201&精华0&积分151&威望10 点&金钱1024 块&贡献30 分&阅读权限20&在线时间154 小时&注册时间&最后登录&
$xmlhttp.open(&GET&, $imgurl, False)
$xmlhttp.send()
$bData = Binary($xmlhttp.responseBody)
$Length = BinaryLen($bData)
$hData = _MemGlobalAlloc($Length, $GMEM_MOVEABLE)
$pData = _MemGlobalLock($hData)
$tData = DllStructCreate('byte[' & $Length & ']', $pData)
DllStructSetData($tData, 1, $bData)
_MemGlobalUnlock($hData)
$pStream = _WinAPI_CreateStreamOnHGlobal($hData)
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromStream2($pStream)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_ScreenCapture_SaveImage(@ScriptDir & &\Image.bmp&, $hBitmap, True)
貌似搞定了- -
帖子201&精华0&积分151&威望10 点&金钱1024 块&贡献30 分&阅读权限20&在线时间154 小时&注册时间&最后登录&
haijie1223
& & 是的,不知道是不是我的方法。。。
帖子1053&精华0&积分805&威望10 点&金钱11612 块&贡献258 分&阅读权限50&在线时间1767 小时&注册时间&最后登录&
你用xmlhttp下载得到的responsebody就是文本的二进制文本,直接以二进制方式写入个文件里就可以了
帖子3107&精华0&积分2854&威望290 点&金钱15256 块&贡献720 分&阅读权限150&在线时间6791 小时&注册时间&最后登录&
方法太多了吧~8#正解
分手说不出来
海鸟跟鱼相爱
只是一场意外
我们的爱差异一直存在
风中尘埃竟累积成伤害
帖子1053&精华0&积分805&威望10 点&金钱11612 块&贡献258 分&阅读权限50&在线时间1767 小时&注册时间&最后登录&
本帖最后由 kevinch 于
21:43 编辑
$url=&/templates/thesnoW/images/logo.png&
$xmlhttp=ObjCreate(&msxml2.xmlhttp&)
If IsObj($xmlhttp) Then
& & & & $xmlhttp.open(&GET&,$url,True)
& & & & $xmlhttp.send
& & & & While $xmlhttp.readystate&&4
& & & & & & & & Sleep(100)
& & & & WEnd
& & & & If $xmlhttp.status=200 Then
& & & & & & & & $tmp=StringRegExp($xmlhttp.getresponseheader(&Content-Type&),&(?is)image\/(.+)&,3)
& & & & & & & & If IsArray($tmp) Then
& & & & & & & & & & & & $file=FileOpen(@ScriptDir&&\temp.&&$tmp[0],2+8+16)
& & & & & & & & & & & & FileWrite($file,$xmlhttp.responsebody)
& & & & & & & & & & & & FileClose($file)
& & & & & & & & & & & & ShellExecute(@ScriptDir&&\temp.&&$tmp[0])
& & & & & & & & EndIf
& & & & EndIf
EndIf复制代码这个试一下
淡泊以明志,宁静以致远
帖子3107&精华0&积分2854&威望290 点&金钱15256 块&贡献720 分&阅读权限150&在线时间6791 小时&注册时间&最后登录&
InetGet(&/img/bdlogo.png&, @DesktopDir&&\test.png&)复制代码
分手说不出来
海鸟跟鱼相爱
只是一场意外
我们的爱差异一直存在
风中尘埃竟累积成伤害
帖子26&精华0&积分10&威望0 点&金钱17 块&贡献-3 分&阅读权限0&在线时间3 小时&注册时间&最后登录&
新思路,值得学习
帖子750&精华0&积分427&威望11 点&金钱147 块&贡献30 分&阅读权限30&在线时间608 小时&注册时间&最后登录&
难在获取图片地址吧?学习中。。。。
[通过 QQ、MSN 分享给朋友]autoit3&ie.au3&介绍
第一讲,介绍一下基本的东西
如何打开一个网页,太简单,加点要求
1,打开百度, , 在百度搜索里面输入”与 autoit3
亲密接触”,偶的blog;
2,窗口我要”800*600”,隐藏工具栏,而且大小不可更改;
3,偏执一点,不喜欢”百度一下,你就知道”,那我们改一下”我的百度,我做主”
4,状态栏里面显示信息”欢迎访问 与 autoit3 亲密接触
5,我不想看到整个过程,我只想看到结果,OK没问题.
首先我们打开一个浏览器,输入百度的网址,这里要用到_IECreate,这个函数的返回值是指向这个ie窗口的目标变量,参数”
0,1,1,0”,分别的意思是:不找已经存在的的ie窗口,显示ie,等待网页载入完全然后返回,激活此ie窗口
#include &IE.au3&
$oIE = _IECreate (")
接下来我们对这个窗口进行一番设置,这里要用到_IEPropertySet,这个函数用来设置浏览器或者DOM元素的
_IEPropertySet ($oIE, "toolbar", 0) ;隐藏toolbar
_IEPropertySet ($oIE, "width", 800) ;设置ie宽800像素
_IEPropertySet ($oIE, "height", 600) ;设置ie高600像素
_IEPropertySet ($oIE, "resizable", 0) ;设置ie不可以调整大小
_IEPropertySet ($oIE, "title","我打开的百度,我做主") ;设置ie标题,取代原title
_IEPropertySet ($oIE, "statustext","欢迎访问 与 autoit3 亲密接触
/iokey") ;设置状态栏
设置完毕,我想在搜索框里面写入搜索内容,这里说明一点,当窗口显示的时候我们可以用send()/sendx()来发送,但是这样会遇到一个常见的问题,可能窗口不是激活状态,因为ie窗口里面的内容不是标准的空间,所以GUICtrlSetData失效了.不过对ie.au3有更好的方法,下面来看:
$oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery1 = _IEFormElementGetObjByName ($oForm, "wd")
_IEFormElementSetValue ($oQuery1, "与 autoit3 亲密接触")
上面三句,分别是找到name为”f”的表单,在这个表单里面找到name为”wd”的表单元素,这里的wd代表的就是搜索框,最后将wd的内容设置为"与
autoit3 亲密接触"
这里还有朋友要问,能不能自动点击搜索按钮呢?当然可以的,而且我们还不是通过简单的send()回车键来实现,
_IEFormSubmit ($oForm,0)
这句就是提交$oForm表单, 0代表不等待网页载入完成立即返回.
这样还不够,那我们再玩点花样,目标是先让ie隐藏,设置啊,输入搜索串都是在隐藏状态下完成,显示出来的时候什么都完成了,首先我们让ie打开的时候就是隐藏状态,
$oIE = _IECreate (")
然后在适当的时候,我们让她显示出来,这里我们用到_IEAction(),这个函数模拟了我们对浏览器的大部分操作,如刷新,后退,退出等等,这里是让ie显示的,当然也有隐藏的功能.
_IEAction ($oIE, "visible")
总结一下,这里我们用到了几个函数;_IEPropertyS_IEC_IEAction
这些都是和浏览器属性相关的,有着众多的参数可以来利用,基本上可以满足对浏览器的操作.这里大家可能要提出一些疑问,在输入百度搜索内容的时候提到的”f””wd”,是从哪里来的?
这个就留在下一讲,将详细的讲述一下如何填写表单.
本次的完全代码:
#include &IE.au3&
$oIE = _IECreate ("",0,0,1,0);打开一个ie,输入百度网址
_IEPropertySet ($oIE, "toolbar", 0)
_IEPropertySet ($oIE, "width", 800)
_IEPropertySet ($oIE, "height", 600)
_IEPropertySet ($oIE, "resizable", 0)
_IEPropertySet ($oIE, "title","我打开的百度,我做 主")
_IEPropertySet ($oIE, "statustext","欢迎访问 与 autoit3 亲密接触
$oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery1 = _IEFormElementGetObjByName ($oForm, "wd")
_IEFormElementSetValue ($oQuery1, "与 autoit3 亲密接触")
_IEFormSubmit ($oForm,1)
_IEAction ($oIE, "visible")
Sleep(5000)
MsgBox(0,"提醒","确定退出IE")
_IEAction ($oIE, "quit")
第二讲,我们开始讨论如何填写表单
第一步,先简单说一下HTML表单(Form).
HTML表单(Form)是HTML的一个重要部分,主要用于采集和提交用户输入的信息。
HTML表单(Form)常用控件有:
input type="text" 单行文本输入框,可以用来输入用户名
input type="password" 密码输入框(输入的文字用*表示)&
input type="submit"
将表单(Form)里的信息提交给表单里action所指向的文件,一般我们从网页上看到的就是确定/发表等等
input type="checkbox" 复选框&
input type="radio" 单选框&
select 下拉框&
textArea 多行文本输入框
第二步,我们如何找到一个网页的表单和表单内的控件.
下面我们结合来讲解如何自动填写
这个就是登录时候我们要操作的几个部分:分类如下
1,用户名&&&
本 默   认/极速 3.0 /简   约&&
4,记住用户名/增强安全性&&
5,登录邮箱/登录网盘
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/iokey/pic/item/0dd7e11c0e8c1d8d87d6b6fc.jpg" BORDER="0" ALT="" STYLE="border-top-style: border-right-style: border-bottom-style: border-left-style: border-width:"
TITLE="autoit3&ie.au3&介绍" />
这个五部分就是163mail里面的表单控件,这里我们先要看一下下面两个函数
_IEFormGetCollection 返回代表文档内表单的目标变量的集合,同时@EXTENDED记录了表单的数量
_IEFormElementGetCollection返回代表指定表单内所有控件的目标变量的集合,同时@EXTENDED记录了该表单内控件的数量
好的,知道了上面两个函数的简单描述,我们可以写出:
#include &IE.au3&
$oIE = _IECreate ("")
$oForms = _IEFormGetCollection ($oIE)
MsgBox(0, "表单信息", "这个页面上共有" & @extended
& "个表单")&
这里还要提到一个关键字"For...In...Next "这个关键字thesnow没有汉化,我就罗嗦几句,
For &$Variable& In
&expression&
statements
&$Variable& 是一个变量,不必事先声明
&expression&是一个数组或者变量合集(至少包含一个元素)
作用是列举&expression&的所有元素.
为什么要提到这个呢?
因为_IEFormGetCollection ($oIE)返回的是个合集,$oQuerys =
_IEFormElementGetCollection ($oForms)这样是错误的,
而正确的方法是:
For $Form In $oForms
MsgBox(0, "表单名称", $oForm.name)
这里的$Form是随意定义的变量,可以是任意的变量,对于表单内的控件也可以同理得到寻找方法,
完整的查看表单的方法就出来了,
#include &IE.au3&
$oIE = _IECreate ("")
$oForms = _IEFormGetCollection ($oIE)
MsgBox(0, "表单信息", "这个页面上共有" & @extended
& "个表单")&
For $Form In $oForms
MsgBox(0, "表单名称", $Form.name)
$oQuerys = _IEFormElementGetCollection ($Form)
For $Query In $oQuerys
MsgBox(0, "表单控件信息", "名称:"&$Query.name
& " 类型:"&$Query.type)
这里只是找到了这些表单/控件,有时还是难分辨具体对于网页上是哪部分,有HTML基础的朋友可以看网页的源文件,核对,无基础的朋友建议借助Dreamweaver来看,不是很难.
第三步,我们来让autoit3填写这个表单,
先说一下思路,因为我们已经可以通过上面的方法找到相关的资料,可以得到如下信息:
表单:一个 名称是login163
1,用户名&&&&&&
: username 类型是text
:passward 类型是passward
本: 默   认/极速 3.0 /简
  约&&&&&
: selType 类型是 select-one
4,记住用户名/增强安全性&&&&&
: remuser 类型是
checkbox&&&&&
/ secure 类型是 checkbox&
5,登录邮箱/登录网盘 : 登录邮箱 类型是 submit /
登录网盘&&&&&
类型是 submit
下面我们用到的几个函数
_IEFormGetObjByName&&&&&
返回一个表单的变量,这个变量指向指定名称的表单
_IEFormElementGetObjByName 返回一个控件的变量,这个变量指向指定表单和名称的控件
_IEFormElementSetValue 设定表单控件的值
接下来我们先试一下,将邮箱的用户名写上去:
#include &IE.au3&
$oIE = _IECreate ("")
$oForm = _IEFormGetObjByName ($oIE, "login163")
$oQuery = _IEFormElementGetObjByName ($oForm, "username")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
同样的方法,写入密码:
$oQuery = _IEFormElementGetObjByName ($oForm, "password")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
下面是"版本"的选择了,这要用到下面这个函数:
_IEFormElementOptionSelect 设置 "Select Option"类的表单控件值,具体见帮助.
$oQuery = _IEFormElementGetObjByName ($oForm, "selType")
_IEFormElementOptionSelect ($oQuery , 1, 1, "byIndex")
对应"记住用户名/增强安全性"这两个checkbox我们取消check状态,需要下面的函数:
_IEFormElementCheckBoxSelect 可以设置"checkbox"类的表单控件值,具体见帮助
_IEFormElementCheckboxSelect ($oForm, 0, "", 0, "byIndex")
_IEFormElementCheckboxSelect ($oForm, 1, "", 0,
"byIndex")&&
最后我们还剩下"登录邮箱/登录网盘"这两个选项了,
这里上一章节用来提交表单的函数_IEFormSubmit 使用不了,为什么?"there is often custom
JavaScript tied to an onClick event for its Submit
button"帮助里面的.
所以我们要用到_IEAction()也是上一章节提到的,我们通过名称找到对应这个控件的变量,然后模拟一个click在这个变量上,方法如下:
$oQuery = _IEFormElementGetObjByName ($oForm, "登录邮箱")
_IEAction($oQuery ,"click")
同样登录网盘就是下面的方法:
$oQuery = _IEFormElementGetObjByName ($oForm, "登录网盘")
_IEAction($oQuery ,"click")
终于写完了,我想综合一/二两讲,添加一些GUI方面的东西,大家可以写出一个不错的163邮件登录的工具,甚至做出一个多邮箱登录软件
这一讲包括的函数:
IEFormElementCheckboxSelect&
_IEFormGetObjByName&&
_IEFormElementGetCollection&
_IEFormElementGetObjByName
_IEFormElementOptionSelect
_IEFormElementSetValue
下面这两个是类似的函数,大家看看帮助就明白了.
_IEFormElementGetValue&
_IEFormElementRadioSelect
#include &IE.au3&
$oIE = _IECreate ("",0,0,1,0)
_IEPropertySet ($oIE, "toolbar", 0)
_IEPropertySet ($oIE, "width", 600)
_IEPropertySet ($oIE, "height", 600)
_IEPropertySet ($oIE, "resizable", 0)
$oForm = _IEFormGetObjByName ($oIE, "login163")
$oQuery = _IEFormElementGetObjByName ($oForm, "username")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
$oQuery = _IEFormElementGetObjByName ($oForm, "password")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
$oQuery = _IEFormElementGetObjByName ($oForm, "selType")
_IEFormElementOptionSelect ($oQuery , 1, 1, "byIndex")
_IEFormElementCheckboxSelect ($oForm, 0, "", 0, "byIndex")
_IEFormElementCheckboxSelect ($oForm, 1, "", 0,
"byIndex")&
$oQuery = _IEFormElementGetObjByName ($oForm, "登录邮箱")
_IEAction($oQuery ,"click")
sleep(2000)
_IEAction ($oIE, "visible")
第三讲 介绍一下点击链接相关的函数
在开始第三讲之前,再说一点,就是关于_IEDocWriteHTML
这个函数,我在博客也提到了这个难题,这几天可能都花在研究相关的内容了,很遗憾目前自己还是没有搞定.
本讲将的函数包括(翻译不准大家体谅):
_IEImgClick() ;模拟点击图片
_IEImgGetCollection () ;返回文档内所有图片的集合
_IELinkClickByIndex () ;模拟点击链接,通过从0开始的索引
_IELinkClickByText()&根据用户提供的字符串,模拟鼠标动作,点击与之相匹配的文字链接。
_IELinkGetCollection () ;返回文档内所有链接的集合
1,关于图片的,因为网友问了,所以这讲里面介绍一下
_IEImgClick()
模仿用户对图片的点击动作,可以通过图片描述,名称,链接的字符串或者完全链接地址,实际应用中可能不大常用.
_IEImgGetCollection () 返回文档内所有图片的集合
我们这里举个例子,通过上面两个函数做一个简单的显示图片工具:
一个简单的例子大家如果感兴趣可以可以考虑做个批量下载的.
_IEFormImageClick()模拟在此类(&input
type=image&)控件上点击.
#include&&IE.au3&
$oIE&=&_IECreate&("/pp/953.html",0,0,1,0)
$oImgs&=&_IEImgGetCollection&($oIE)
;~ $iNumImg = @extended
;~ MsgBox(0, "Img Info", "There are " &
$iNumImg & " images on the page")
For&$oImg&In&$oImgs
If&StringInStr($oImg.src,"/pp")&=&0&And&StringInStr($oImg.src,"120x120")&=&0&Then
;~&&&&&&_IECreate($oImg.src,0,1,1,0)
&&&&&$sInfo&=&"Src:
"&&&$oImg.src&&&@CR
&&&&&$sInfo&&=&"FileName:
"&&&$oImg.nameProp&&&@CR
&&&&&$sInfo&&=&"Height:
"&&&$oImg.height
&&&&&$sInfo&&=&"&&&&&Width:
"&&&$oImg.width
&&&&&$sInfo&&=&"&&&&&Border:
"&&&$oImg.border&&&@CR
&&&&&$sInfo&&=&"存储位置:
"&&&@DesktopDir
&&&&&InetGet($oImg.src,@DesktopDir&"girl.jpg",0,1)
&&&&&MsgBox(0,&"美女图片信息",$sInfo,8)
_IEAction($oIE,"quit")
2,关于链接的论坛也有朋友问过,正好发现一个问题,是在使用过程中发现的,_IELinkClickByText
() 在A版中会出错退出,只能在U版本中使用,这个函数使用方便但是有局限性.
_IELinkClickByIndex ()
这个函数实际使用中,如果搭配简单的例子可以直接写出相应的参数,而如果在较为复杂的网页中为了保证正确性最好搭配下面那个函数,
_IELinkGetCollection () 来查找需要的链接.
列举官方帮助例子,基础例子.
#include &IE.au3&
$oIE = _IE_Example ("basic")
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
MsgBox(0, "Link Info", $iNumLinks & " links
For $oLink In $oLinks
MsgBox(0, "Link Info", $oLink.href)
最后说一下一个网友的三个问题,可能大家或许都有疑问,所以解答了一下,欢迎补充意见.
1,form的name不存在(源码中看的,如果用代码查询则为0);那_IEFormGetObjByName
函数不能用了。该如何定位表单?该页面中有多个这样的表单。
2,表单中的控件有相同的name,该如何有效地定位控件?
3,如果要抓取页面上特定的由程序生成的验证码图片(ie缓存中没有该图),该如何操作?
期待第三讲…………
一位网友提出上面的疑问,我先解答一下:
1,确实存在没有name的时候,这里先说一个IE.AU3没提到的一点,就是form的id也可以替代name一项,在应用中可以使用;
如果二者都没有,那么我们也可以利用_IEFormGetCollection,
其返回值是变量合集,可以列出每个form的目标变量,有了她我们就找到需要的form了.
2,对于相同name的控件,多出现在 (type="radio" value="033"
name="rdb_rb")这类情况中,我们可以利用value的不同,来区分
3,看了一些验证码图片都是可以下载的,用_IEImgGetCollection
找到所以,然后找到自己需要的,然后用可以download下来.
ie.au3在网页中的应用,很大一部分是在针对ie的表单(form)进行操作,ie.au3也提供了相应的函数供我们使用,但是对表单(form)之外的控件或者一些比较特殊无法用和form相关的函数来处理的情况,我们应该怎么做?
本讲就是介绍和讲解解决上面问题的函数,主要有下面几个函数:
_IEGetObjById 返回一个目标变量,对应指定的id or name
_IEGetObjByName 返回一个目标变量,对应指定的id or name&
_IETableGetCollection&&&&&&
返回指定文档内所有/指定的表格的目标变量,指定的表单是以索引顺序来指定的(0,1,2,3...)
_IETableWriteToArray&&&&&&
读出表格内的数据,写入到一个数组,
_IETagNameAllGetCollection&&&&&&
返回指定文档内所有/指定的标记名(Tagname)的目标变量,指定的标记名是以索引顺序来指定的(0,1,2,3...)
_IETagNameGetCollection&&&&&&
返回指定文档内所有特定标记名的目标变量集.
-----------------------------------------------------------------------------------------------------------------------
_IEGetObjById&返回一个目标变量,对应指定的id or
_IEGetObjByName&返回一个目标变量,对应指定的id
从帮助里面看 _IEGetObjByName 比
_IEGetObjById多了一个参数,这个参数也是在ie.au3里面经常提到的$i_index,
把所有同id or name 的列一个索引(0,1,2,3...),$i_index表示索引的第几个,以便于我们指定特定的id or
函数比较简单 就说明一下官方的例子
*******************************************************
下面的例子将"line1"内的"innertext"显示在控制台(编辑器的output&&&&&&
F8显示隐藏)
*******************************************************
#include&&IE.au3&
$oIE&=&_IE_Example&("basic")
_IEGetObjById&($oIE,&"line1")&;返回一个id为"line1"的div的指向变量,有了这个变量我们可以用_IEPropertyGet/_IEPropertySet对其进行操作
ConsoleWrite(_IEPropertyGet($oDiv,&"innertext")&&&@CR)
;~ MsgBox(0,"",_IEPropertyGet($oDiv, "innertext")
& @CR) 个人习惯这种用法.
*******************************************************
; 下面的方法等同于 $oForm = _IEFormGetObjByName($oIE,
"ExampleForm")
*******************************************************
#include&&IE.au3&
$oIE&=&_IE_Example&("form")
$oForm&=&_IEGetObjByName
_IETableGetCollection&&&&&&
返回指定文档内所有/指定的表格的目标变量,指定的表单是以索引顺序来指定的(0,1,2,3...)
_IETableWriteToArray&&&&&&
读出表格内的数据,写入到一个数组,
这两个可以收集网页内的数据,对于数据型的网页,可以通过这两个函数很方便的获取数据.
例子的目的是读取网页内所以表格数据,并且显示出来.
#include&&IE.au3&
#include&&Array.au3&
$oIE&=&_IECreate&("http://www./search.php?srchfrom=45000&searchsubmit=yes")
$oInputs&=&_IETableGetCollection&($oIE)&;返回指网页内所有表格的目标变量
$iNumTables&=&@extended&&;文档内所以表格的数量
MsgBox(0,&"Table
Info",&"There are
"&&&$iNumTables&&&"
tables on the page")&
For&$oInput&In&$oInputs
$table&=&_IETableGetCollection&($oIE,$i)
$oInput&=&_IETableWriteToArray&($table)&;读取指定表格内的数据,写入到数组
_ArrayDisplay($oInput,&"第"&$i+1&"个表单内容",0,1)&;显示数组
_IETagNameAllGetCollection&&&&&&
返回指定文档内所有/指定的标记名(Tagname)的目标变量,指定的标记名是以索引顺序来指定的(0,1,2,3...)
_IETagNameGetCollection&&&&&&
返回指定文档内所有特定标记名的目标变量集.
感觉_IETagNameAllGetCollection 的实用性不大,而_IETagNameGetCollection
则相对来讲比较有用,
对于网页里面的某些控件,例如button,无法采用getbyname or
getbyid等方式准确找到的时候,可以用tagname来处理,
网页内的button
&INPUT&&&&&&
onclick="checkform" type=button value="发 表"&
我们可以用下面这种方法来点击:
$oInputs = _IETagNameGetCollection ($oIE, "INPUT")
For $oInput In $oInputs
if $oInput.value = "发 表" then
_IEAction ($oInput, "click")
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。AutoIT(19)
_IEFormElementGetCollection :
Returns a collection object variable representing all Form Elements within a given Form.
返回文档内描述表单元素的对象变量合集
_IEFormGetCollection: Returns a collection object variable representing the Forms in the document or a single form by index.
返回文档内描述表单的对象变量合集
; *******************************************************
; Example 1 - Get a reference to a specific form element by 0-based index.
;& && & & & & & In this case, submit a query to the Google search engine
; *******************************************************
#include &IE.au3&
_IEFormGetCollection
_IEFormElementGetCollection
_IEFormElementSetValue
&AutoIt IE.au3&)
_IEFormSubmit
; *******************************************************
; Example 2 - Get a reference to the collection of forms on a page,
;& && & & & & & and then loop through them displaying information for each
; *******************************************************
#include &IE.au3&
_IECreate (&http://www.google.com&)
_IEFormGetCollection ($oIE)
&Forms Info&,
&There are & &
& & forms on this page&)
For $oForm
In $oForms
& & MsgBox(0,
&Form Info&,
$oForm.name)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:453095次
积分:6550
积分:6550
排名:第2425名
原创:194篇
转载:113篇
评论:111条
(1)(1)(2)(6)(9)(5)(14)(5)(9)(4)(2)(8)(1)(8)(3)(8)(1)(1)(2)(2)(2)(3)(3)(5)(2)(9)(2)(1)(2)(5)(7)(4)(2)(12)(2)(1)(3)(1)(1)(13)(20)(6)(5)(1)(2)(3)(1)(3)(7)(3)(6)(4)(2)(3)(12)(9)(5)(12)(14)(16)

我要回帖

更多关于 collection 的文章

 

随机推荐