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

[IE类操作] 【已解决】帮忙获取一下这个网页的名字!

 火.. [复制链接]
发表于 2012-12-25 17:01:51 | 显示全部楼层 |阅读模式
本帖最后由 chamlien 于 2012-12-26 23:07 编辑

网页部分图片显示如下:


我想获取到灰白色按钮那里的“你已说过谢谢”这几个字,怎么获取呢?
部分网页代码如下:

tr><td class="rowhead nowrap" valign="top" align="right">感谢者</td><td class="rowfollow" valign="top" align="left"><span id="thanksadded" style="display: none;"><input class="btn" type="button" value="感谢表示成功!" disabled="disabled" /></span><span id="curuser" style="display: none;"><span class="nowrap"><a  href="userdetails.php?id=843" class='User_Name'><b>Chamlien</b></a></span> </span><span id="thanksbutton"><input class="btn" type="button" id="saythanks"  onclick="saythanks(669);"  value="你已说过谢谢" disabled="disabled" /></span>&nbsp;&nbsp;<span id="nothanks"></span><span id="addcuruser"></span><span class="nowrap"><a  href="userdetails.php?id=843" class='User_Name'><b>Chamlien</b></a>

麻烦各位解答一下!

本帖子中包含更多资源

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

×
发表于 2012-12-25 17:48:44 | 显示全部楼层
本帖最后由 annybaby 于 2012-12-25 20:35 编辑

回复 1# chamlien

从这段代码中匹配出倒不是难事,简单来说,匹配网页源码来找到自己想要的部分,最简单的方法就是环视来取,看它前后内容的特点,直接复制上去,然后把中间自己需要提取的那部分删除掉,换成(.+?),如果有明显的特征,可以加入更精确的描述(比如说,全是数字的话,也可以上面的,更好一点是\d+,这样可以过滤更多的干扰),然后试运行,查看结果,如果:
1.刚好已经包括了,则完成;
2.包括了,但有更多不需要的信息,则增加过滤条件;
3.没包括,考虑是否环视部分需要转义
上面的是一种通用的,最简单的,最快速的方法~~
可以解决大多数简单的问题~~

本帖也一样,先使用复制/粘贴部分替换的方法,可以直接匹配出"表示感谢成功!"和"你已说过谢谢",符合上面所说三种情况的第2种:
2.包括了,但有更多不需要的信息,则增加过滤条件;
故需要增加过滤条件,查看源码特点,发现需要提取内容"前面不远处"(注意:意味深长!!)有字符串"saythanks"而"感谢表示成功!"前面则没有,添加此过滤条件,即可把不需要的过滤掉~~
自己去动手试试吧,不要做伸手党

我码这么多字,当然会比直接粘贴一句现成的代码死更多的脑细胞,但授人以鱼不如授之以渔~~
发表于 2012-12-25 18:58:45 | 显示全部楼层
### 友情提示:本脚本由 Au3.REHelper 于 2012/12/25 18:57 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = 'tr><td class="rowhead nowrap" valign="top" align="right">感谢者</td><td class="rowfollow" valign="top" align="left"><span id="thanksadded" style="display: none;"><input class="btn" type="button" value="感谢表示成功!" disabled="disabled" /></span><span id="curuser" style="display: none;"><span class="nowrap"><a  href="userdetails.php?id=843" class=' & "'User_Name'><b>Chamlien</b></a></span> </span><span id=" & '"thanksbutton"><input class="btn" type="button" id="saythanks"  onclick="saythanks(669);"  value="你已说过谢谢" disabled="disabled" /></span>  <span id="nothanks"></span><span id="addcuruser"></span><span class="nowrap"><a  href="userdetails.php?id=843" class=' & "'User_Name'><b>Chamlien</b></a>" & @CRLF
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '"saythanks\(669\);"  value="([^"]*)"', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))
发表于 2012-12-25 20:24:41 | 显示全部楼层
再简化一下
### 友情提示:本脚本由 Au3.REGHelper 于 2012/12/25 20:24 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = 'tr><td class="rowhead nowrap" valign="top" align="right">感谢者</td><td class="rowfollow" valign="top" align="left"><span id="thanksadded" style="display: none;"><input class="btn" type="button" value="感谢表示成功!" disabled="disabled" /></span><span id="curuser" style="display: none;"><span class="nowrap"><a  href="userdetails.php?id=843" class=' & "'User_Name'><b>Chamlien</b></a></span> </span><span id=" & '"thanksbutton"><input class="btn" type="button" id="saythanks"  onclick="saythanks(669);"  value="你已说过谢谢" disabled="disabled" /></span>  <span id="nothanks"></span><span id="addcuruser"></span><span class="nowrap"><a  href="userdetails.php?id=843" class=' & "'User_Name'><b>Chamlien</b></a>" & @CRLF
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, ';"  value="([^"]+)', 3, 1)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))
 楼主| 发表于 2012-12-25 22:29:07 | 显示全部楼层
回复 4# lpxx

如果从网页中获取呢?比如地址是:http://172.21.3.12(内网地址)
我的思路是用一个函数获取网页代码,然后再匹配“你已说过谢谢”。
但我还是新手,实现起来有些难。麻烦指点一下迷津!
发表于 2012-12-25 23:47:09 | 显示全部楼层
回复 5# chamlien

比较麻烦的可以通过winhttp或者xmlhttp,用GET来获取,简单一点的可以用_iedocreadhtml,最简单的
$Source=binarytostring(InetRead('你的网址',1))
 楼主| 发表于 2012-12-26 13:07:24 | 显示全部楼层
回复 7# zxxpt6

给的那两个函数都只能获取到数字和字母,中文的怎么获取呢?
发表于 2012-12-26 19:56:36 | 显示全部楼层

;用IE打开你的这个网页以后再运行以下脚本
#include <ie.au3>
$oIE = _IEAttach ('WWW.SSS.COM','URL')  ;将WWW.SSS.COM换成你网页的地址
$saythanks = _IEGetObjById ($oIE,'saythanks') 
$saythanksTEXT = _IEFormElementGetValue ($saythanks)
MsgBox (4096,0,$saythanksTEXT)

 楼主| 发表于 2012-12-26 23:05:04 | 显示全部楼层
回复 9# 骗子

楼上的代码_IEAttach 改成_IECreate完美测试通过,真是太感谢了!!
发表于 2012-12-30 22:40:52 | 显示全部楼层
回复 10# chamlien


    都没个加分奖励  :(
发表于 2013-3-3 20:53:06 | 显示全部楼层
真不错,呵呵,直得学习
发表于 2013-3-12 14:43:01 | 显示全部楼层
謝謝分享。感謝提供。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 17:27 , Processed in 0.099035 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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