Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Программирование, связанное с 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? Если есть - ну тупо перебирай все, ищи нужное имя, как нашёл - бери свой текст... |