【问题标题】:Scrape with xmlhttp使用 xmlhttp 抓取
【发布时间】:2021-05-08 17:45:22
【问题描述】:

我想从https://www.goaloong.net/football/6in1 获取数据 此页面包含一个表格。

我试过了:

Sub REQUESTXML()

Dim XMLHttpRequest As xmlHttp
Dim HTMLDoc As New HTMLDocument
Dim elem As Object
Dim x As Long

Set XMLHttpRequest = New MSXML2.xmlHttp
XMLHttpRequest.Open "GET", "https://www.goaloong.net/football/6in1", False
XMLHttpRequest.send
While XMLHttpRequest.readyState = 200
    DoEvents
Wend

Debug.Print XMLHttpRequest.responseText
HTMLDoc.Body.innerHTML = XMLHttpRequest.responseText

x = 1

For Each elem In HTMLDoc.getElementsByClassName("Leaguestitle")

    Sheets("req").Range("A" & x).Value = HTMLDoc.getElementsByTagName("a")(0).innerText
    
 x = x + 1
 
 Next elem

 End Sub

我没有结果。

请帮帮我?

【问题讨论】:

    标签: excel vba xmlhttprequest scrape


    【解决方案1】:

    https://www.goaloong.net/football/6in1 页面是动态的,即首先加载 java 脚本,然后脚本加载内容。一种方法是在 IE 中加载整页内容并从中取出。下面的例子(经过测试):

    Sub REQUESTXML()
        Dim IE As New InternetExplorer
        Dim elem As Object
        Dim x As Long
        
        IE.navigate "https://www.goaloong.net/football/6in1"
        
        Do While IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        
        'for debug purpose
        Open ThisWorkbook.Path & "\TESTFILE.html" For Output As #1
        Print #1, IE.document.body.innerHTML
        Close #1
        
        x = 1
        For Each elem In IE.document.getElementsByClassName("Leaguestitle")
            Sheets(1).Range("A" & x).Value = elem.innerText
            x = x + 1
        Next elem
    
        IE.Quit
    End Sub
    

    【讨论】:

    • 是的,它适用于 IE,但我想使用 xmlhttp,IE 太慢了。无论如何,我需要所有的桌子。替代品?
    • 谢谢,但我所知道的程序太复杂了
    【解决方案2】:

    如果您可以使用 DLL 并重写代码,则可以使用 VBA 运行 Microsoft 的 Edge 浏览器(基于 Chrome 的浏览器)。有了它,你几乎可以做任何你想做的事情。但是请注意,对 DOM 的访问是由 javascript 执行的,而不是像 将 IE 调暗为新的 InternetExplorer。查看 VBA 示例,您就会掌握。

    https://github.com/peakpeak-github/libEdge

    旁注:C# 和 C++ 的示例也包括在内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2021-12-20
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 2021-05-25
      相关资源
      最近更新 更多