Как анализировать данные HTML с помощью Excel VBA - PullRequest
0 голосов
/ 05 февраля 2019

Я новичок в разборе данных HTML с помощью Excel VBA.Ниже мой код и пример HTML.Обратите внимание в HTML: pt-DefaultParagraphFont-000016 "> oles и Responsabilities

Я хочу открыть сотни похожих внутренних веб-страниц, найти раздел Roles and Responsabilities, а затем начать собирать определенные данные и вставлять их вразличные столбцы.

Я изменил свой код ниже, теперь он работает на основе того, что было рекомендовано.

Кстати, на случай, если это поможет другим, я нашел отличное решение дляОшибки 'объект вызван отключен'; вот исправление: Set ie = New InternetExplorerMedium

Option Explicit
Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum

Sub ImportStackOverflowData()
    Dim a As String
    Dim i As Long
    Dim ie As InternetExplorer
    Dim html As HTMLDocument

    'Set ie = New InternetExplorer 'replaced with InternetExplorerMedium to fix error
    Set ie = New InternetExplorerMedium 'this fixes this error: The object invoked has disconnected from its client
    ie.Visible = False
    ie.navigate "policy.myurl.com"
    Do While ie.READYSTATE <> READYSTATE_COMPLETE
        DoEvents
    Loop
    Set html = ie.document

    Dim tag As IHTMLElement
    Dim tags As IHTMLElementCollection
    Set tags = html.getElementsByClassName("pt-000015")
    For Each tag In tags
        'more logic here
    Next

    Set html = ie.document
    Set ie = Nothing
End Sub

HTML SAMPLE:

div class = "pt-000015">R Олесь и Обязанности Ключевые роли управления данными Управление данными является общей ответственностью. <</p>

1 Ответ

0 голосов
/ 06 февраля 2019

Вам нужно

html.getElementsByClassName("pt-000015")

Это множественное число, так как возвращает коллекцию и нуждается в имени в конце.

...