Итак, я сейчас работаю над проектом, в котором я пытаюсь очистить данные с веб-страницы и экспортировать их в Excel. Этот вопрос изучался много раз, но я чувствую, что на один простой вопрос еще предстоит ответить. Часто источник веб-страницы «скрывает» всю полезную информацию.
В моей ситуации таблица Excel, из которой я пытаюсь получить данные, получает данные из других онлайн-приложений. Данные постоянно меняются каждый день, и я пытаюсь разработать инструмент, чтобы справиться с этим.
Мои попытки найти решение:
- Я подумал, что смогу просто извлечь данные из таблицы и загрузить их напрямую, используя этот код.
For Each Tab1 In HTML_Content.getElementsByTagName("table")
With HTML_Content.getElementsByTagName("table")(iTable)
For Each ERow In .Rows
For Each ECol In ERow.Cells
Sheets(1).Cells(iRow, iCol).Select
Sheets(1).Cells(iRow, iCol) = ECol.innerText
iCol = iCol + 1
Next ECol
iCol = Column_Num_To_Start
iRow = iRow + 1
Next ERow
End With
iTable = iTable + 1
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tab1
Это очень полезно для людей, которые имеют дело с источником веб-страницы, которая уже имеет данные. Если нет, вы можете увидеть только экспортируемые заголовки в Excel.
- Возможно, подойдет выполнение «копирования и вставки».
Dim ie As InternetExplorer
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.Navigate Web_URL
Application.Wait (Now + TimeValue("0:00:05"))
Set objCollection = ie.Document.getElementsByClassName("k-widget k-reset k-header k-menu k-context-menu k-menu-vertical")
i = 0
While i < objCollection.Length
If objCollection(i).ID = "menu" Then ' submit button clicking
Set objElement = objCollection(i)
End If
i = i + 1
Wend
objElement.rClick
objElement.rClick не работает, потому что это не настоящая команда. Еще одна проблема, связанная с этим подходом, заключается в том, что меню правой кнопки мыши на веб-странице фактически отключено. Если щелкнуть правой кнопкой мыши, откроется новое меню, поэтому для копирования огромного количества данных вам придется вручную выделить и скопировать все. Это утомительный процесс, и делать это каждый день нежелательно.
Мой последний вопрос: есть ли способ обойти эту проблему. Могу ли я собрать данные с веб-сайта, используя Excel VBA, который отключает нажатие правой кнопки мыши и не содержит данных, которые я хочу, содержать в источнике веб-страницы?