chamlien 发表于 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"><ahref="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"><ahref="userdetails.php?id=843" class='User_Name'><b>Chamlien</b></a>

麻烦各位解答一下!

annybaby 发表于 2012-12-25 17:48:44

本帖最后由 annybaby 于 2012-12-25 20:35 编辑

回复 1# chamlien

从这段代码中匹配出倒不是难事,简单来说,匹配网页源码来找到自己想要的部分,最简单的方法就是环视来取,看它前后内容的特点,直接复制上去,然后把中间自己需要提取的那部分删除掉,换成(.+?),如果有明显的特征,可以加入更精确的描述(比如说,全是数字的话,也可以上面的,更好一点是\d+,这样可以过滤更多的干扰),然后试运行,查看结果,如果:
1.刚好已经包括了,则完成;
2.包括了,但有更多不需要的信息,则增加过滤条件;
3.没包括,考虑是否环视部分需要转义
上面的是一种通用的,最简单的,最快速的方法~~
可以解决大多数简单的问题~~
本帖也一样,先使用复制/粘贴部分替换的方法,可以直接匹配出"表示感谢成功!"和"你已说过谢谢",符合上面所说三种情况的第2种:
2.包括了,但有更多不需要的信息,则增加过滤条件;
故需要增加过滤条件,查看源码特点,发现需要提取内容"前面不远处"(注意:意味深长!!)有字符串"saythanks"而"感谢表示成功!"前面则没有,添加此过滤条件,即可把不需要的过滤掉~~
自己去动手试试吧,不要做伸手党

我码这么多字,当然会比直接粘贴一句现成的代码死更多的脑细胞,但授人以鱼不如授之以渔~~

xms77 发表于 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"><ahref="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"><ahref="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), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

lpxx 发表于 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"><ahref="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"><ahref="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), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

chamlien 发表于 2012-12-25 22:29:07

回复 4# lpxx

如果从网页中获取呢?比如地址是:http://172.21.3.12(内网地址)
我的思路是用一个函数获取网页代码,然后再匹配“你已说过谢谢”。
但我还是新手,实现起来有些难。麻烦指点一下迷津!

annybaby 发表于 2012-12-25 23:47:09

回复 5# chamlien

比较麻烦的可以通过winhttp或者xmlhttp,用GET来获取,简单一点的可以用_iedocreadhtml,最简单的
$Source=binarytostring(InetRead('你的网址',1))

chamlien 发表于 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)

chamlien 发表于 2012-12-26 23:05:04

回复 9# 骗子

楼上的代码_IEAttach 改成_IECreate完美测试通过,真是太感谢了!!

骗子 发表于 2012-12-30 22:40:52

回复 10# chamlien


    都没个加分奖励:(

glkjxy 发表于 2013-3-3 20:53:06

真不错,呵呵,直得学习

cuihairu 发表于 2013-3-12 14:43:01

謝謝分享。感謝提供。
页: [1]
查看完整版本: 【已解决】帮忙获取一下这个网页的名字!