如何使用VBA获取谷歌搜索的第一个搜索结果链接?

Asp*_*r93 1 excel automation vba web-scraping

在我的日常任务中,我目前必须搜索大量产品并收集有关这些产品的信息。所以我的想法是在 google 上搜索产品,并通过从产品标题部分提取数据来从第一个搜索结果中获取信息,并且几乎对许多产品进行循环。

到目前为止,这是我的代码:

Sub SkuAutomation()

Dim ie As Object


'Navigates to google
 Set ie = CreateObject("InternetExplorer.application")
 ie.Visible = True
 ie.Navigate "https://google.co.uk/search?q=" & Worksheets("sheet1").Cell(9, 4).Value & " " & Worksheets("sheet1").Cells(9, 2)


'Waits for page to load before next action

Do While ie.ReadyState <> READYSTATE_COMPLETE

Loop

End Sub
Run Code Online (Sandbox Code Playgroud)

我只想添加一段代码,要么点击谷歌返回的第一个链接,要么为我返回链接。我的想法是从该页面的产品标题部分抓取数据!不过还是非常早期的阶段。

我只是一个初学者,所以任何类型的帮助都将不胜感激!提前谢谢了。

QHa*_*arr 6

您的里程可能会有所不同,但对于您提供的内容,您可以使用 CSS 选择器组合通过页面样式定位第一个链接。

我使用#search div.r [href*=http] 但你可以简化为#search .r a. 我想知道有一个httphref虽然。

#是一个id选择器,一个空格" "是一个后代选择器(选择前面元素的一个子元素,这[]是一个属性选择器。A"."是一个类选择器,即按类名选择一个元素。

我正在寻找第一个元素,其href属性http值包含在其值中,该元素具有一个div类名称为 的父元素元素,其父元素r的 id 为search.

Option Explicit
Public Sub GetLink()
    Dim ie As New InternetExplorer
    With ie
        .Visible = True
        .navigate "https://google.co.uk/search?q=Currys+241825"

        While .Busy Or .readyState < 4: DoEvents: Wend

        Debug.Print .document.querySelector("#search div.r [href*=http]").href

        .Quit
    End With

End Sub
Run Code Online (Sandbox Code Playgroud)