如何使用vbscript从远程网页获取元素值?

时间:2014-01-20 20:45:11

标签: vbscript

球员, 我是菜鸟,我想编写一个本地vbscript来从远程网页获取一些值。 网页上有一些片段。

<div id="profile_content" class="dxb_bc">
    <div>
        <div class="hm">
            <p>
                <a href="space-uid-52433.html" target="_blank">
                    <img src="http://bbs.dealmoon.com/uc_server/avatar.php?uid=52433&size=middle" />
                </a>
            </p>
            <h2 class="mbn">
                <a href="space-uid-52433.html" target="_blank">LittleCar</a>
            </h2>
        </div>
        <ul class="xl xl2 cl ul_list">
            <li class='ul_ignore'>
                <a href="home.php?mod=spacecp&ac=friend&op=ignore&uid=52433&handlekey=ignorefriendhk_52433" id="a_ignore_52433" onclick="showWindow(this.id, this.href, 'get', 0);">AAAAAA</a>
            </li>
            <li class='ul_msg'>
                <a href="home.php?mod=space&uid=52433&do=wall">BBBBBB</a>
            </li>
            <li class='ul_poke'>
                <a href="home.php?mod=spacecp&ac=poke&op=send&uid=52433&handlekey=propokehk_52433" id="a_poke_52433" onclick="showWindow(this.id, this.href, 'get', 0);">CCCCCC</a>
            </li>
            <li class='ul_pm'>
                <a href="home.php?mod=spacecp&ac=pm&op=showmsg&handlekey=showmsg_52433&touid=52433&pmid=0&daterange=2" id="a_sendpm_52433" onclick="showWindow('showMsgBox', this.href, 'get', 0)">DDDDDD</a>
            </li>
        </ul>
        </div>
    </div>
</div>

我的问题很简单。我只想得到'LittleCar''AAAAAA''BBBBBB'等值。我试着编写vbscript来捕获元素:

<a href="space-uid-52433.html" target="_blank">LittleCar</a>
像这样:

IEApp.Document.getElementById("profile_content").getElementByTagName("a").Item(1) 

但我得到的错误就像不支持的方法。我能做的就是在vbscript中通过id获取元素。我没有找到任何有价值的东西来解决我的问题。所以我在这里

我已经问了一个类似的问题,这个问题被搁置了。我的声誉已降低2点。我无法相信没有人可以帮助我。 感谢

1 个答案:

答案 0 :(得分:1)

使用

获取A标签的集合
' Note the "s" in getElementsByTagName
Set collATags = IEApp.Document.getElementsByTagName("a")
'                                        ^ there it is

现在你可以像:

一样迭代它们
For Each aTag in collATags
    Wscript.Echo aTag.outerHtml
Next

修改

要获取AAAAA等特定文本,请使用innerHtml属性:

For Each aTag in collATags
    If aTag.innerHtml = "AAAAA" then
        '  Found it!
        Set foundTag = aTag
        Exit for
    End if
Next

要从具有ID的标记缩小到特定标记,您可以使用:

Set profileContentElement = document.GetElementById("profile-content")

使用此元素获取具有标记名称的所有元素:

Set collATags = profileContentElement.getElementsByTagName("a")

并使用上述方法迭代元素以获得具有AAAAA文本的元素作为innerHtml

<强> EDIT2:

为了获取标识符不是id的元素,获取具有正确ID的父元素,获取Tagname上的childcollection并过滤outerHtml上的正确元素:

' Get the correct parent
Set profileContentElement = document.GetElementById("profile-content")

' Get the childcollection with the A tag
Set collATags = profileContentElement.getElementsByTagName("a")

' Iterate through the collection
Set foundTag = Nothing
For Each aTag in collATags
    If aTag.outerHtml = "home.php?mod=space&uid=52433&do=wall" then
        '  Found it!
        Set foundTag = aTag
        Exit for
    End if
Next

' Get the text in the foundTag
If not foundTag Is Nothing Then
    wscript.echo "Woei, found the linktext, it is: " & foundTag.innerHtml
End If

注意:这里没有Windows机器,这是未经测试的代码。