VBA:在HTML文档

时间:2017-08-22 20:24:21

标签: vba

我正在尝试从 this link 中删除所有href产品链接。

我使用以下代码获取页面上的产品链接:

Sub urlCatch()

Dim internet As Object
Dim internetdata As Object
Dim div_result As Object
Dim header_links As Object
Dim link, itm As Object
Dim url As String
Dim X As Variant

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

url = "http://www.dell.com/vg/p/desktops.aspx?c=vg&cs=vgdhs1&l=en&s=dhs&~ck=mn"
internet.Navigate url

Do Until internet.ReadyState >= 4
    DoEvents
Loop


Set internetdata = internet.document
Set div_result = internetdata.getelementsbyclassname("categorySubNavigation").getelementsbyclassname("c4 seriesOptions")
Set header_links = div_result.getelementsbytagname("a")
For Each itm In header_links
    Set link = itm.ChildNodes.Item(0)
    Cells(Range("A" & Rows.Count).End(xlUp).Row + 1, 1) = link.href
Next

End Sub

我在 div_reult 时遇到错误:"对象不支持此属性或方法"。

这是我第一次使用元素来检索某些内容,所以也许我可能会犯错,而我目前并未发现错误。

请查看我的代码,让我知道我在这里犯的错误。

我的一位朋友告诉我,我可能需要使用正则表达式来获取所有这些链接,但我想首先掌握这种方法。

请给我一些指导。感谢。

1 个答案:

答案 0 :(得分:1)

GetElementsByTagName或其他获取方法适用于单个元素而不是集合。你需要另一个循环。

Sub urlCatch()

    Dim url                 As String
    Dim internet            As Object
    Dim internetdata
    Dim div_result
    Dim links
    Dim itm
    Dim itm2



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

    url = "http://www.dell.com/vg/p/desktops.aspx?c=vg&cs=vgdhs1&l=en&s=dhs&~ck=mn"
    internet.Navigate url

    Do
        DoEvents
    Loop Until internet.ReadyState >= 4 And Not internet.busy


    Set internetdata = internet.document.body

    Set div_result = internetdata.getelementsbyclassname("c4 seriesOptions")
    For Each itm In div_result
        Set links = itm.getElementsByTagName("A")
        For Each itm2 In links
            Cells(Range("A" & Rows.Count).End(xlUp).Row + 1, 1) = itm2.href
        Next
    Next


End Sub