2017-09-26 28 views
-2

我得到一个462错误(远程服务器不存在或不可用):使用VBA刮YouTube资料:问题与拉查看数据,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 
+0

你怎么想其实从那时候页刮?你是否已经对每个视频都附带了评论? – SIM

+0

_“远程服务器不存在或不可用”_表明问题在于联系远程服务器。 –

+0

@Shahin我只想要查看计数 – Blake

回答

1

注意,你是调用一个函数getElements是复数。这个函数返回你试图分配给单个元素的集合。换句话说,存在不匹配。

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

一个解决办法是改变你的DIM声明:

Dim QuestionField As IHTMLElementCollection 
+0

谢谢!现在我得到一个462错误Set QuestionField = html.getElementsByClassName(“view-count style-scope yt-view-count-renderer”) – Blake

+0

对'getElements'的调用没有任何返回,你的代码假设会返回一些东西。您需要添加更多代码来处理这种情况。此外,请记住正在返回一个集合,因此您需要在访问属性之前循环遍历结果,或者取消第一个元素。 –