Formulei o seguinte código para recuperar dados da página da web fornecida: https://www.redfin.com/NV/Fallon/630-Serpa-Pl-89406/unit-Fallon/home/178255574?utm_source=android_share&utm_medium=share&utm_nooverride =1&utm_content=link&2010988919=variant&utm_campaign=homecard_share .
No entanto, estou encontrando um erro de 'objeto obrigatório' na linha: sqFt = html.getElementsByClassName("statsLabel")(0).NextSibling.getElementsByClassName("statsValue")(0).innerText.
Espero que alguém possa oferecer assistência para corrigir esse problema, permitindo que o código extraia com êxito as informações pertinentes da página da web.
Sua orientação seria muito apreciada. Obrigado.
Sub ExtractingRedfin()
Dim url As String
Dim ie As Object
Dim html As Object
Dim Lastrow As Long
Lastrow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
' URL of the webpage to scrape
url = Sheet1.Cells(Lastrow, 1).Value
' Create a new Internet Explorer instance
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False ' Set to True if you want to see the browser
' Navigate to the URL
ie.navigate url
' Wait for the browser to finish loading the page
Do While ie.readyState <> 4 Or ie.Busy
DoEvents
Loop
' Get the HTML content of the page
Set html = ie.document
Dim beds As String
Dim baths As String
Dim sqFt As String
Dim price As String
Dim est As String
Dim address As String
Dim cityStateZip As String
beds = html.getElementsByClassName("statsValue")(0).innerText
baths = html.getElementsByClassName("statsValue")(1).innerText
sqFt = html.getElementsByClassName("statsLabel")(0).NextSibling.getElementsByClassName("statsValue")(0).innerText
price = html.getElementsByClassName("info-block price")(0).getElementsByClassName("statsValue")(0).innerText
est = html.getElementsByClassName("info-block price")(0).getElementsByClassName("statsLabel")(0).innerText
address = html.getElementsByClassName("street-address")(0).innerText
cityStateZip = html.getElementsByClassName("citystatezip")(0).innerText
ie.Quit
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet3")
ws.Cells(2, 1).Value = beds
ws.Cells(2, 2).Value = baths
ws.Cells(2, 3).Value = sqFt
ws.Cells(2, 4).Value = price
ws.Cells(2, 5).Value = est
ws.Cells(2, 6).Value = address
ws.Cells(2, 7).Value = cityStateZip
End Sub
Parece que o site foi reestruturado desde a última execução bem-sucedida do seu código. Tente substituir as linhas relevantes por
... embora isso funcione agora, naturalmente não há garantia de quanto tempo funcionará (se o site for reestruturado novamente).
Se você estiver interessado, leia mais aqui W3Schools e aqui MS Docs .