Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Доступ к элементу div страницы на html посредством


Автор: AleksP79 19.3.2023, 16:17
Добрый день!

В html коде есть элемент div, к которому необходимо получить доступ посредством VBA
   <div id="tender-card-content">
                    <div id="report-script" class="tender-card-title">
                        <h1 class="tct-tender-number">
                            Закупка <span class="copy-script tender-number-copy">32312204305</span>
                        </h1>
                        <div class="tct-tender-text">Содержимое, которое необходимо скопировать с html страницы через VBA</div>
...

Получается только через getElementsByTagName("div")(номер элемента).innerText, но номер элемента div может меняться динамически и такой вариант не подходит.
Привожу код, в котором попробовал разные варианты доступа с указанием сообщения о ошибке в комментариях.

Sub test()

sURL = "https://synapsenet.ru/zakupki/fz223/32312204305%231--sanktpeterburg-vipolnenie-rabot-po-obsledovaniyu-stroitelnih"

    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", sURL, False
        .send
        txt = .responseText
        
        Set pDoc = CreateObject("HTMLFile")
        pDoc.body.innerHTML = txt
   
       .Open "GET", sURL, False: .send
        getHTTP = StrConv(.responseBody, vbUnicode)
        
        MsgBox pDoc.getElementsByTagName("div")(номер элемента).innerText
        'Работает.'

        MsgBox getHTTP.getElementsByTagName("div")(номер элемента).innerText
        'Сообщение об ошибке Object required.'
        
        pDoc.getElementsByClassName ("tct-tender-text")
        'Сообщение об ошибке Object doesn't support this property or method.'
        
       getHTTP.getElementsByClassName ("tct-tender-text")
        'Сообщение об ошибке Object required.'
   
       pDoc.querySelectorAll ("tct-tender-text")
      'Сообщение об ошибке Object doesn't support this property or method.'
      
        getHTTP.querySelectorAll ("tct-tender-text")
        'Сообщение об ошибке Object required.'

    End With
    
    Set oXMLHTTP = Nothing

End Sub

Автор: Akina 20.3.2023, 15:12
А как идентифицируется нужный тег - по имени класса? если да - разве нет у выбранного div свойства, возвращающего это имя, какого-нибудь getElementsByTagName("div")(номер элемента).ClassName? Если есть - ну тупо перебирай все, ищи нужное имя, как нашёл - бери свой текст...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)