Как я могу извлечь таблицу с веб-сайта https://www.lyngsat.com/tvchannels/in/Aaj-Tak.html в Excel, у которого нет идентификатора?
Я хочу извлечь данные из таблицы, содержащей положение спутника, частоту и шифрование.
Раньше я пытался использовать getElementsByTagName, но на странице слишком много тегов для другой таблицы.
Это таблица с положением спутника, частотой и шифрованием.
Перебирайте все таблицы, пока не найдете одну с «Положением» во второй ячейке второй строки.
Я бы использовал xmlhttp. Нужная таблица находится в индексе 11 (индексация на основе 0). Я использую буфер обмена как простой способ записать таблицу. Если вы не хотите использовать буфер обмена, вы можете зациклить строки и столбцы таблицы, как показано в WriteTable
sub здесь.
Этот
html.querySelectorAll("table").item(11)
выбирает таблицу по этому индексу в ответе. Эквивалентно
html.getElementsByTagName("table")(11)
Существует еще один уникальный идентификатор при использовании в сочетании с селектором типа table
, в выводе которого является значением атрибута таблицы border
1
:
так что вы могли бы использовать
clipboard.SetText html.querySelector("table[border='1']").outerHTML
VBA:
Option Explicit
Public Sub GetTable()
Dim html As HTMLDocument, clipboard As Object '< VBE > Tools > References > Microsoft HTML Object Library
Set html = New HTMLDocument
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.lyngsat.com/tvchannels/in/Aaj-Tak.html", False
.send
html.body.innerHTML = .responseText
End With
clipboard.SetText html.querySelectorAll("table").item(11).outerHTML ' html.querySelector("table[border='1']").outerHTML
clipboard.PutInClipboard
ThisWorkbook.Worksheets("Sheet1").Range("A1").PasteSpecial
End Sub
Должны ли мы угадать, какой стол вы хотите?