Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于谷歌搜索的VBA宏_Vba_Excel_Web Scraping_Google Search - Fatal编程技术网

用于谷歌搜索的VBA宏

用于谷歌搜索的VBA宏,vba,excel,web-scraping,google-search,Vba,Excel,Web Scraping,Google Search,我正在尝试修改一个VBA宏用于谷歌搜索。我希望excel中的输出是结果数(在Google上的点击数)。我曾尝试将宏中的元素更改为“resultStats”,但在尝试运行它时不断出现错误。这个宏最初是为了收集谷歌的网络链接而制作的,它工作得非常好 所以我认为我只需要更改脚本中的元素,但这不起作用 下面我已经发布了脚本 希望有人能回答我的问题 Sub Gethits() Dim url As String, lastRow As Long Dim XMLHTTP As Object,

我正在尝试修改一个VBA宏用于谷歌搜索。我希望excel中的输出是结果数(在Google上的点击数)。我曾尝试将宏中的元素更改为“resultStats”,但在尝试运行它时不断出现错误。这个宏最初是为了收集谷歌的网络链接而制作的,它工作得非常好

所以我认为我只需要更改脚本中的元素,但这不起作用

下面我已经发布了脚本

希望有人能回答我的问题

Sub Gethits()
    Dim url As String, lastRow As Long
    Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
    Dim start_time As Date
    Dim end_time As Date
    Dim var As String
    Dim var1 As Object

    lastRow = Range("A" & Rows.Count).End(xlUp).Row

    Dim cookie As String
    Dim result_cookie As String

    start_time = Time
    Debug.Print "start_time:" & start_time

    For i = 2 To lastRow

        url = "https://www.google.com/search?q=" & Cells(i, 1) & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)

        Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
        XMLHTTP.Open "GET", url, False
        XMLHTTP.setRequestHeader "Content-Type", "text/xml"
        XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
        XMLHTTP.send

        Set html = CreateObject("htmlfile")
        html.body.innerHTML = XMLHTTP.ResponseText
        Set objResultDiv = html.getelementbyid("rso")
        Set var1 = html.getelementbyid("resultStats")
        Cells(i, 2).Value = var1.innerText

        DoEvents
    Next

    end_time = Time
    Debug.Print "end_time:" & end_time

    Debug.Print "done" & "Time taken : " & DateDiff("n", start_time, end_time)
    MsgBox "done" & "Time taken : " & DateDiff("n", start_time, end_time)                
End Sub

你的目标是什么?输出应该是什么样子?我的目标是输入一个单词,我想知道谷歌搜索结果的数量。当我运行脚本时,在“Set objH3=objResultDiv.getelementbyid(“resultStats”)(0)”中出现错误(错误438对象不支持此属性或方法)。并且输出应该是Google搜索中的结果数(点击)。getElementById返回单个元素,而不是集合-因此在它之后使用
(0)
将导致错误。避免后期绑定。添加对MicrosoftXMLV6.0的引用,您将获得Intellisense来帮助YouTunks。我试过在没有(0)的情况下运行,但是,现在我得到错误91“Object variable or With block variable not set”。有什么想法吗?