【发布时间】:2018-05-31 08:57:33
【问题描述】:
我有一个关于如何从这个网页上抓取数据的问题:
它似乎被保存在 iframe 中,并且屏幕上出现了一堆 javascript。
当我尝试收集保存在 iframe 下的 span 或 div 或 tr 标签中的元素时,我似乎无法收集其中的数据。
我的目标是包含在 class="pane-legend-item-value pane-legend-line main" 元素内的内部文本。
显然,内文会根据光标在特定时间在屏幕上的位置而改变。所以我试图做的是设置一个已经加载页面并且光标位于正确位置的 IE,在图表的末尾(给我最后一个数据点),然后你可以将光标移出屏幕,然后我写了一些简单的代码来抓取那个IE窗口然后尝试GetElements,此时我无法获取任何数据。
到目前为止,这是我的代码,它非常粗糙,因为我一直在尝试编辑,因为我阅读了更多选项,但没有任何胜利:( ...任何想法或帮助将不胜感激!(屏幕截图是也在底部)
Sub InvestingCom()
Dim IE As InternetExplorer
Dim htmldoc As MSHTML.IHTMLDocument 'Document object
Dim eleColth As MSHTML.IHTMLElementCollection 'Element collection for th tags
Dim eleColtr As MSHTML.IHTMLElementCollection 'Element collection for tr tags
Dim eleColtd As MSHTML.IHTMLElementCollection 'Element collection for td tags
Dim eleRow As MSHTML.IHTMLElement 'Row elements
Dim eleCol As MSHTML.IHTMLElement 'Column elements
Dim elehr As MSHTML.IHTMLElement 'Header Element
Dim iframeDoc As MSHTML.HTMLDocument
Dim frame As HTMLIFrame
Dim ieURL As String 'URL
'Take Control of Open IE
marker = 0
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For x = 0 To (IE_count - 1)
On Error Resume Next
my_url = objShell.Windows(x).document.Location
my_title = objShell.Windows(x).document.Title
If my_title Like "*" & "*" Then 'compare to find if the desired web page is already open
Set IE = objShell.Windows(x)
marker = 1
Exit For
Else
End If
Next
'Extract data
Set htmldoc = IE.document 'Document webpage
' I have tried span, tr, td etc tags and various other options
' I have never actually tried collecting an HTMLFrame but googled it however was unsuccessful
End Sub
excel 可以找到并与之对话的现有 IE 的屏幕截图,其中 excel 和 VB 在另一个屏幕上打开,以及我要抓取的数据
【问题讨论】:
标签: javascript excel vba iframe web-scraping