Скопируйте данные, чтобы преуспеть с VBA с веб-сайта, используя Classname - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь получить информацию с веб-сайта, но не могу получить никаких данных. https://markets.cboe.com/us/equities/market_statistics/book/AAPL/ У меня та же проблема, что и в этом посте R rvest получить пустую таблицу Как я могу это сделать в VBA? Я нашел этот код в inte rnet, я изменил его, но он не получает данные, и информация появляется в окне, а не вставляется в электронную таблицу. Если вы напрямую экспортируете всю таблицу, это было бы здорово, иначе мне пришлось бы копировать ячейку за ячейкой. Заранее спасибо!

Sub Get_Web_Data()
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim price As Variant
' Website to go to.
website = "https://markets.cboe.com/us/equities/market_statistics/book/AAPL/"
' Create the object that will make the webpage request.
Set request = CreateObject("MSXML2.XMLHTTP")
' Where to go and how to go there - probably don't need to change this.
request.Open "GET", website, False
' Get fresh data.
request.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
' Send the request for the webpage.
request.send
' Get the webpage response data into a variable.
response = StrConv(request.responseBody, vbUnicode)
' Put the webpage into an html object to make data references easier.
html.body.innerHTML = response
' Get the price from the specified element on the page.
price = html.getElementsByClassName("book-viewer__ask book-viewer__ask-shares").Item(2).innerText
' Output the price into a message box.
MsgBox price
End Sub

1 Ответ

0 голосов
/ 17 марта 2020

используйте скорее inte rnet explorer и включите элементы управления Microsoft inte rnet в vba, я использовал этот код и сумел извлечь данные с того же сайта и вставить в ячейку;

sub inte rnet ()

Dim IEe As InternetExplorer
    Dim doc, element
    Set IEe = New InternetExplorer

    IEe.Visible = TRUE
    IEe.Navigate "https://markets.cboe.com/us/equities/market_statistics/book/AAPL/"

       Do While IEe.ReadyState = 4: DoEvents: Loop
    Do Until IEe.ReadyState = 4: DoEvents: Loop

Set element = IEe.Document.getElementByID("id="ext-gen1057"") 'to get the ID, right click in internet explorer and pick the inspect element option the click on the data you want 
thisworkbook.sheets("sheet1").range("a1")= element.value  

end sub 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...