Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Сергей1980
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991

парсинг простейшей html таблицы с сайта

29.05.2020, 17:27. Показов 5646. Ответов 0

Студворк — интернет-сервис помощи студентам
Привет всем!
Натолкнулся на проблему с простейшим парсингом таблицы с сайта. Табличку и простейшую страничку создал на localhost, при заходе через веб браузер все работает и отображается нормально. Вот весь html код:
HTML5
1
2
3
4
5
6
7
8
9
10
<html>
<body>
<table class="myTable" id="myTable">
<tr><td>Цвет светофора</td><td>Свечение секунд</td></tr>
<tr><td>Красный</td><td>30</td></tr>
<tr><td>Желтый</td><td>5</td></tr>
<tr><td>Зеленый</td><td>15</td></tr>
</table>
</body>
</html>
Пытаюсь спарсить такую табличку через VBA и вывести значения на лист Excel. И почему то вылетает сообщение о неизвестной ошибке:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Dim objIE As InternetExplorer
    Dim ele As Object
    Dim y As Integer
    
    Set objIE = New InternetExplorer
    objIE.Visible = True
    objIE.navigate "http://localhost/svetofor/index.html"
    'wait for page to load
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
    y = 1
    For Each ele In objIE.document.getElementById("myTable").getElementsByTagName("tr")
        Sheets("Sheet1").Range("A" & y).Value = ele.Children(0).textContent
        Sheets("Sheet1").Range("B" & y).Value = ele.Children(1).textContent   
        y = y + 1
    Next
    ActiveWorkbook.Save
Подскажите пожалуйста, как можно спарсить значение таблицы с сайта, в моем простом примере светофор. Сама страница отлично работает и все отображается. Код взаимодействия VBA и веб взял из сети и он отлично работает на другом ресурсе.
Но в моем случае почему то выскакивает ошибка.

Добавлено через 1 час 39 минут
Я разобрался со своей проблемой достаточно лаконично. Пошел через модель самой таблицы html , её строками и ячейками в структуре документа HTML. Скорость работы мгновенная, по сравнению с примером ч/з IE:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim htm As Object: Set htm = CreateObject("htmlfile")
Dim tr As Object
Dim td As Object
Dim x As Long
Dim y As Long
    With CreateObject("msxml2.xmlhttp")
        .Open "POST", "http://localhost/svetofor", False
        .send
        htm.body.innerHTML = .responseText
    End With
    With htm.getElementsByTagName("table").Item(0)
        For Each tr In .Rows
       MsgBox tr.Cells(0).innerText
       MsgBox tr.Cells(1).innerText
        Next tr
    End With
Возникает вопрос, в данном примере используется селектор htm.getElementsByTagName("table").Item(0 ) ,который отлично цепляет по тегу <table> таблицу , с индексом данной таблицы в структуре DOM равной 0 (Item(0)) Проблема по топику решена на ура. Пришлось немного покопаться на сайтах по html.

Но почему то отсутствует возможность цеплять таблицу по селектору класса getElementsByClassName("myTable").Item(0 ). И фиг знает почему. Это больше факультативный вопрос уже. Никто не может в рамках написанного мною кода доточить его так,чтобы можно было цеплятся за имя класса class="myTable" таблицы или за его id="myTable"

Добавлено через 1 час 17 минут
Всё, разобрался со всем, вопрос снят)
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2020, 17:27
Ответы с готовыми решениями:

Парсинг HTML-таблицы
есть самая простая доска объявлений. В хтмле идут формы, и обработчик заносит в базу содержимое формы и выводит в хтмле в виде таблицы ...

Парсинг таблицы HTML
По этому коду получается вся таблциа в 1 строку string html = streamReader.ReadToEnd(); HtmlDocument...

Парсинг html блока с сайта
Прошу помощи у специалистов. Нужно спарсить блок праздников (справа) сайта http://webplus.info/index.php?page=334 , сделал так, но...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2020, 17:27
Помогаю со студенческими работами здесь

значения из html таблицы (парсинг)
Всем привет! Ребят помогите с парсингом html таблицы таблица вида &lt;td class=&quot;Date&quot;...

Парсинг таблицы в html файле
Приветствую. Имеется кучка html-файлов следующего содержания: * &lt;tr&gt; &lt;td&gt;&lt;a...

Парсинг данных из html-таблицы
Добрый вечер! Прошу помочь разобраться в парсинге данных из html таблицы &lt;tr&gt; &lt;th align=&quot;center&quot;&gt;Size&lt;/th&gt; ...

Парсинг html кода с сайта tchromium
Уже 4 день подряд пытаюсь написать программу которая копировала б html код с сайта в мемо с помощью tchromium .Если не сложно...

Получение и парсинг HTML с другого сайта
Та еще задачка =/ Сайт №1 - мой сайт Сайт №2 - не мой сайт на сайте №2 есть HTML элементы с данными которые мне нужны для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru