使用VBA刮取Youtube数据:拉动视图数据的问题,462错误

时间:2017-09-26 13:01:29

标签: html excel vba dom web-scraping

我收到462错误(远程服务器不存在或不可用):

Set QuestionField = html.getElementsByClassName("view-count style-scope yt-view-count-renderer")

我很确定我想要提取的视图信息是在类标记中,我不确定为什么getElementsByClassName无法提取此信息。

以下是来自YouTube的相关HTML代码:

<
span class="view-count style-scope yt-view-count-renderer">952 views
<
/span>

这是VBA代码:

Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum

Sub ImportYTData()
Dim ie As InternetExplorer
Dim html As HTMLDocument

Set ie = New InternetExplorer
ie.Visible = True
ie.navigate "https://www.youtube.com/watch?    v=0YNJQNpP9Do&list=PL_Lt8vbVLfk_pzt-TWzfk_GNAKp-ePXc1&index=22"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
Application.StatusBar = "Trying to go to the YouTube Video ..."
DoEvents
Loop

Set html = ie.document
MsgBox html.DocumentElement.innerHTML

Application.StatusBar = ""

Dim RowNumber As Long
Dim QuestionField As IHTMLElement
Dim views As String

Set QuestionField = html.getElementsByClassName("view-count style-scope yt-view-count-renderer")
RowNumber = 4

views = QuestionField.innerText
views = Replace(views, "views", "")
views = Replace(views, "view", "")
Cells(RowNumber, 3).Value = Trim(views)

Set html = Nothing

End Sub

1 个答案:

答案 0 :(得分:1)

请注意,您正在调用复数函数getElements。此函数返回您尝试分配给单个元素的集合。换句话说,存在不匹配。

Set QuestionField = html.getElementsByClassName("view-count style-scope yt-view-count-renderer")

一种解决方案是将DIM语句更改为:

Dim QuestionField As IHTMLElementCollection