从Web提取没有标识符的数据?

时间:2019-05-27 20:28:14

标签: html excel vba web-scraping

如何从网站https://www.lyngsat.com/tvchannels/in/Aaj-Tak.html提取表格到没有标识符的Excel?

我想从包含卫星位置,频率和加密的表中提取数据。

以前,我尝试使用getElementsByTagName,但是页面上不同表的标签太多。

1 个答案:

答案 0 :(得分:1)

我会使用xmlhttp。您想要的表位于索引11(基于0的索引)。我使用剪贴板作为写表的简单方法。如果您不想使用剪贴板,则可以如WriteTablehere

中所示循环表的行和列

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