使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章