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

Posted

技术标签:

【中文标题】使用 VBA 抓取 Youtube 数据:拉取视图数据的问题,462 错误【英文标题】:Using VBA to scrape Youtube Data: Issue with Pulling View Data, 462 Error 【发布时间】:2018-03-07 17:28:55 【问题描述】:

我收到 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

【问题讨论】:

你想从那个页面上实际抓取什么?您是否在每个视频都附有所有可用评论? “远程服务器不存在或不可用”提示问题出在与远程服务器的联系上。 @Shahin 我只想要观看次数 相关:***.com/questions/3331176/… 【参考方案1】:

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

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

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

Dim QuestionField As IHTMLElementCollection

【讨论】:

谢谢!现在我收到一个 462 错误 Set QuestionField = html.getElementsByClassName("view-count style-scope yt-view-count-renderer") getElements 的调用没有返回任何内容,并且您的代码假设将返回某些内容。您需要添加更多代码来处理这种情况。另外,请记住正在返回一个集合,因此在访问属性之前,您需要循环遍历结果或提取第一个元素。

以上是关于使用 VBA 抓取 Youtube 数据:拉取视图数据的问题,462 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从 Web 抓取数据时无法获取准确的元素类表

VBA如何批量抓取数据

如何抓取 YouTube 视频评论?

使用 css 选择器 excel vba 从网站抓取数据

用于抓取所有评论和回复的 YouTube 数据 API

用于在线抓取数据的 VBA 程序使我的笔记本电脑性能变慢