来自网站的Visual Basic copy html链接(getElementsByClassName)?

时间:2013-11-29 15:24:35

标签: html vb.net excel

您好我是VB的新手,目前正在Excel中使用它我遇到了问题我想去网站然后从该网站获取链接然后打印该链接。

我已经知道如何“访问网站并通过getElementsById获取innertext”:

Dim ie As InternetExplorer, doc As HTMLDocument, quote As String


Sub MsgboxTest()

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True

        ie.navigate "http://www.patan77.com/"


        Do
            DoEvents
            Loop Until ie.readyState = READYSTATE_COMPLETE

            Set doc = ie.document


            quote = doc.getElementById("date").innerText



           Debug.Print quote



End Sub

这只是从div id获取文本(日期),如果我想要它打印链接,我从页面底部悬停在“其他东西”,然后是来自CinebenchEstimator的实际链接:

IMG:http://www.patan77.com/screenshot/print_link_2.JPG

在这种情况下,我希望它打印出来:http://www.patan77.com/Cinebench_Estimator/Cinebench_Estimator.html

(我只是以我的网站为例来展示我想做的事情)

我猜我需要做这样的事情:

quote = doc.getElementById("mail").getElementsByClassName("menu")(0).getElementsByTagName("ul")(0).getElementsByTagName("li")(0).getElementsByTagName("ul")(0).getElementsByTagName("li")(3).getAttribute("href")

但这显然不起作用,所以我错过了什么/做错了什么?

提前致谢。

(:

1 个答案:

答案 0 :(得分:1)

唯一的问题是:

doc.getElementById("mail") _
    .getElementsByClassName("menu")(0) _
    .getElementsByTagName("ul")(0) _
    .getElementsByTagName("li")(0) _
    .getElementsByTagName("ul")(0) _
    .getElementsByTagName("li")(3)

返回li元素,该元素没有href属性。

您想要li元素的第一个孩子:

doc.getElementById("mail") _
    .getElementsByClassName("menu")(0) _
    .getElementsByTagName("ul")(0) _
    .getElementsByTagName("li")(0) _
    .getElementsByTagName("ul")(0) _
    .getElementsByTagName("li")(3) _
    .Children(0).getAttribute("href")

这将返回href的{​​{1}}。在URL基础之前(“http://www.patan77.com/”),您将全部设置。