Я абсолютно новый в webscraping и имею некоторые второстепенные знания VBA. Я пытаюсь сделать скребок, который входит на сайт, выполняет поиск, а затем сбрасывает детали поиска. Меня очень раздражает то, что мой скребок может выполнить поиск с заданными параметрами, но после того, как поиск сделан и загружен веб-сайт, я делаю запрос на чтение innerHTML в VBA, и результаты НЕ являются исходным кодом новой страницы. Поэтому я не могу извлечь какую-либо информацию, потому что мой код VBA не видит фактические данные html-страницы. Почему это происходит? Каков исходный код, который извлекает мои VBA?Excel код VBA читает неверный внутренний кодHTML
Благодарим вас за помощь!
Public Sub my_scraper()
Dim my_data1, my_data2 As String
Dim my_Coll As String
i = 1
my_data1 = ActiveSheet.Cells(1, 1).Value
my_data2 = ActiveSheet.Cells(1, 2).Value
my_Coll = profession_hu_scraper(my_data1, my_data2)
Cells(2, 2).Value = my_Coll
End Sub
Public Function profession_hu_scraper(ByVal my_data1 As String, ByVal my_data2 As String) As String
Dim objIE As InternetExplorer
Dim html As HTMLDocument
Dim Link As Object
Dim ElementCol As Object
Dim erow As Long
'Dim all_inp_el As Object
'Application.ScreenUpdating = False
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Visible = True
.Navigate "https://www.profession.hu/"
Do While .ReadyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading website..."
DoEvents
Loop
Set html = .Document
Range("A16") = html.DocumentElement.innerHTML
.Document.getElementById("header_keyword").Value = my_data1
.Document.getElementById("header_location").Value = my_data2
Set my_classes = .Document.getElementsByClassName("p2_button_inner")
For Each my_class In my_classes
If my_class.getAttribute("value") = "Keresés" Then
Range("c4") = "Clicked"
my_class.Click
i = i + 1
End If
Next my_class
Do While .ReadyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading website..."
DoEvents
Loop
Set html = .Document
Range("B16") = html.DocumentElement.innerHTML
End With
Set objIE = Nothing
Application.StatusBar = "Finished"
'Application.StatusBar = ""
End Function
Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –
Я отредактировал свой ответ так, чтобы он был прав. мои appoligies – JamTay317
Уважаемый JamTay. Спасибо за сценарий, но это мне совсем не помогает. В своем сообщении я описал, что моя проблема заключается в следующем: – hunsnowboarder