使用excel vba从网站获取特定值

使用excel vba从网站获取特定值,vba,excel,web,web-scraping,Vba,Excel,Web,Web Scraping,我正在尝试使用Excel VBA从网站获取特定文本。但我不知道怎么做。请帮忙 我想得到突出显示的html元素的值“52.05”: 这是我的代码: rowNum = 10 While rowNum < 51 Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document On Error Resume Next output

我正在尝试使用Excel VBA从网站获取特定文本。但我不知道怎么做。请帮忙

我想得到突出显示的html元素的值“52.05”:

这是我的代码:

rowNum = 10
While rowNum < 51
    Do
        DoEvents
        Loop Until ie.readyState = READYSTATE_COMPLETE

    Set doc = ie.document
    On Error Resume Next

    output = doc.getElementById("yfi_quote_summary_data")
    Sheet1.Cells(rowNum, "E").Value = output

    rowNum = rowNum + 1
    ticker = Sheet1.Range("B" & rowNum).Value
    ie.navigate "http://finance.yahoo.com/q?s=" & ticker
Wend
ie.Quit
rowNum=10
而rowNum<51
做
多芬特
循环直到ie.readyState=readyState\u完成
Set doc=ie.document
出错时继续下一步
输出=doc.getElementById(“yfi报价汇总数据”)
表1.单元格(rowNum,“E”)。值=输出
rowNum=rowNum+1
ticker=Sheet1.范围(“B”和rowNum).值
即“导航”http://finance.yahoo.com/q?s=“&报价器
温德
即退出
试试这个

Sub Get_Values()
Dim RowNum As Long
Dim ie As InternetExplorer
Dim ticker As String
Dim MainDocument As IHTMLDocument
Dim TableHTML, PrevClose As Object
Set ie = New InternetExplorer

ie.Visible = True

RowNum = 10

    ticker = Sheets("Sheet1").Range("B" & RowNum).Value
    ie.navigate "http://finance.yahoo.com/q?s=" & ticker

While RowNum < 51
    'LOOP UNTIL EMPTY COLUMN "B"
    Do Until Sheets("Sheet1").Range("B" & RowNum).Value = ""

    'WAIT FOR PAGE LOAD
    Do While Not ie.readyState = READYSTATE_COMPLETE
        DoEvents
        Application.Wait (Now + TimeValue("0:00:01"))
    Loop

    'SET PAGE VARIABLES
    Set MainDocument = ie.document
    Set TableHTML = MainDocument.getElementById("yfi_quote_summary_data")

    'FIND "PREV CLOSE" SECTION OF TABLE
    For Each tableheader In TableHTML.getElementsByTagName("th")
        If tableheader.innerHTML = "Prev Close:" Then
        Set PrevClose = TableHTML.getElementsByTagName("td")(0)
        Sheet1.Cells(RowNum, "E").Value = PrevClose.innerHTML
        Exit For
        End If
    Next tableheader

    'CONTINUE TO NEXT ROW
    RowNum = RowNum + 1
    ticker = Sheet1.Range("B" & RowNum).Value
    ie.navigate "http://finance.yahoo.com/q?s=" & ticker

    Loop
Wend

ie.Quit

End Sub
将此更改为

If tableheader.innerHTML = "Bid:" Then

注释掉下一步错误恢复时的
-运行代码时会发生什么?另外:这里已经有很多类似的问题(有答案):我想举一些例子。One Error Resume Next:指定当发生运行时错误时,控件会立即转到发生错误的语句后面的语句。我知道它的作用,这就是为什么我建议你把它注释掉。你能给我看一些代码来说明如何得到那个值吗?你想让我告诉你如何注释掉那行吗?谢谢你的代码。它工作得很好。然而,我不明白它是如何工作的。1.你能给我解释一下吗?2.在哪里可以找到有关此主题的教程?3.为什么当我在“span”中得到值“53.00”时,我只需要使用getElementById(“yfs_b00_msft”)。innerText?嗨,我很高兴知道它工作得很好。如果对你有帮助,请注明正确答案。关于教程,我自己也很难找到一些。最好的学习方法是练习:)请查看我上面编辑的代码,了解如何获得
出价
价值谢谢。我已经把它标为正确答案了。我只是混淆了父母和孩子的关系。根据一些帖子,首先我需要找到父母,然后再寻找孩子。我只是被这部分弄糊涂了。也许我需要学习一点html?
If tableheader.innerHTML = "Bid:" Then