因此,我目前正在一个项目中,尝试从网页上抓取数据并将其导出到excel。这个问题已经探讨了很多次,但是我觉得有一个简单的问题尚待解答。很多时候,网页的来源会“隐藏”所有有用的信息。
在我的情况下,我试图从中提取数据的excel表是从其他联机应用程序中获取数据。数据每天都在不断变化,我正在尝试开发一种工具来克服这一点。
我试图解决的问题:
For Each Tab1 In HTML_Content.getElementsByTagName("table")
With HTML_Content.getElementsByTagName("table")(iTable)
For Each ERow In .Rows
For Each ECol In ERow.Cells
Sheets(1).Cells(iRow, iCol).Select
Sheets(1).Cells(iRow, iCol) = ECol.innerText
iCol = iCol + 1
Next ECol
iCol = Column_Num_To_Start
iRow = iRow + 1
Next ERow
End With
iTable = iTable + 1
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tab1
这对于正在处理已经具有数据的网页源的人们非常有用。如果没有,您可能只会看到标题已导出到excel。
Dim ie As InternetExplorer
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.Navigate Web_URL
Application.Wait (Now + TimeValue("0:00:05"))
Set objCollection = ie.Document.getElementsByClassName("k-widget k-reset k-header k-menu k-context-menu k-menu-vertical")
i = 0
While i < objCollection.Length
If objCollection(i).ID = "menu" Then ' submit button clicking
Set objElement = objCollection(i)
End If
i = i + 1
Wend
objElement.rClick
objElement.rClick无效,因为它不是真正的命令。这种方法的另一个问题是,实际上在网页上禁用了右键单击菜单。右键单击会弹出一个新菜单,因此要复制大量数据,您将需要手动突出显示和复制所有内容。这是一个单调乏味的过程,因此每天都不要这样做。
我的最后一个问题:有没有办法解决这个问题。我是否可以使用excel VBA从网站上抓取数据,从而禁用了右键单击按钮,并且网页源中没有我想要的数据?