Извлекать данные из сети без идентификатора? - PullRequest
0 голосов
/ 27 мая 2019

Как мне извлечь таблицу с веб-сайта https://www.lyngsat.com/tvchannels/in/Aaj-Tak.html в Excel, который не имеет идентификатора?

Я хочу извлечь данные из таблицы, содержащей данные о местоположении, частоте и шифровании спутника.

Ранее я пытался использовать getElementsByTagName, но на странице слишком много тегов для другой таблицы.

1 Ответ

1 голос
/ 27 мая 2019

Я бы использовал xmlhttp.Таблица, которую вы хотите, имеет индекс 11 (индексирование на основе 0).Я использую буфер обмена как простой способ выписать таблицу.Если вы не хотите использовать буфер обмена, вы можете зациклить строки и столбцы таблицы, как показано в WriteTable sub здесь

. Этот

html.querySelectorAll("table").item(11)

выбираеттаблица по этому индексу в ответе.Эквивалентен

html.getElementsByTagName("table")(11)

При использовании в сочетании с селектором типа table имеется другой уникальный идентификатор, в выходной файл которого входит атрибут таблицы border со значением 1:

enter image description here

, чтобы вы могли использовать

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...