首页 > 解决方案 > 是否可以使用 VBA 从 facebook 抓取数据?

问题描述

我想知道 VBA 是否可以从公共 facebook 页面中抓取数据,例如关注者数量或喜欢的数量。我把下面的代码放在一起。

现在我假设面临两个问题:(i) facebook 不再支持 internet explorer 和 (ii) 我不确定 facebook 是否允许抓取。

所以,我想我正在寻找的实际上是一个读取网页源代码的代码。为简单起见:我很乐意使用 Internet Explorer(即跳过问题(i))并读出“其他类似这样的人”的数量。

请参阅附加的屏幕截图,了解 DOM 资源管理器中的类名和我正在寻找的点赞数。用于说明目标图形和 DOM 类名称的屏幕截图。

有任何想法吗?

代码:

Sub social_facebook()
Dim IE As New InternetExplorer
Dim html As HTMLDocument
Dim url As String

url = "https://www.facebook.com/adidasoriginals"

    With ActiveSheet
        Dim results(0 To 4) ', counter As Long, i As Long
        With IE
            .Visible = True
        
                    .navigate url
                    While .Busy Or .readyState < 4: DoEvents: Wend

'--------------------------------------------------------------------------
                    Set html = IE.document
                    Set HTMLDivElement = html.getElementsByClassName("_59k _2rgt _1j-f _2rgt")
                    '_59k _2rgt _1j-f _2rgt >> this is - according to my understanding - the class name I am looking for.
                    Debug.Print HTMLDivElement.innerHTML
               
            .Quit
        End With

    End With

'-------------------------------------------------------------------------

End Sub

标签: vbafacebookinternet-explorerweb-scraping

解决方案


接口的getElementsByClassName方法Document返回具有所有给定类名的所有子元素的类数组对象。你想要的元素是 class 的第五个元素_59k _2rgt _1j-f _2rgt,所以代码是这样的:

Set html = IE.document
Set HTMLDivElement = html.getElementsByClassName("_59k _2rgt _1j-f _2rgt")(4)
Debug.Print HTMLDivElement.innerHTML

推荐阅读