VBA调试,对象不支持此属性

时间:2018-09-20 09:42:45

标签: excel vba debugging web-scraping

我对VBA非常陌生,并且堆栈溢出。我正在开发一个vba,该vba会使用来自中国搜索引擎Baidu.com的前5个URL链接。但是,经过一天的研究,我仍然无法解决一些错误。请提供帮助。

Sub GettingURL()

    Application.ScreenUpdating = False
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "https://baidu.com/s?wd=" & Sheets("Data").Cells(1, 2).Text
        While .Busy Or .readyState < 4:  DoEvents:  Wend

        With .document.all.ires.getElementsByTagName("A")
            c = 3
            For u = 0 To Application.Min(8, .Length - 1) Step 2
                Sheets("Data").Cells(c, 1) = .Item(u).href
                c = c + 1
            Next
        End With
        .Quit
    End With
    Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:2)

tl; dr;

所以,这一直困扰着我,直到............我想如果HTML中的链接最终在指向页面的方向上出现不同的显示怎么办。

因此,尽管从技术上讲不是前5个(因为元素5的页面样式不一致;缺少h3标签),但是当您查看生成的最终URL时,这似乎与注释中给定的列表匹配


CSS选择器组合:

我使用CSS选择器组合来定位#content_left h3 [href]的页面。这会在ID为href的元素内的父h3元素内寻找具有content_left属性的元素。

这是搜索词red与CSS查询匹配的内容。 (提供了示例)

enter image description here


VBA:

您可以通过querySelectorAll的{​​{1}}方法来应用CSS选择器组合,因为您期望有多个匹配的元素,这将返回一个静态的document。循环返回的nodeList中的.Length,以按索引访问项目。

nodeList

结果:

比较检索到的URL及其最终显示的内容,如果在导航栏中输入它们,则会得到以下信息: