html - 如何使用 vba 从网站中提取数据
问题描述
我是从网站提取数据的 vba 编码新手,所以一般来说,我使用此代码连接并检查项目以从网站提取数据,但此代码无法使用我的公司 webapp 通过 vba 中的手表检查数据。当我在课堂上添加手表时它什么也没显示,所以我该怎么办。我公司 webapp 的 HTML 代码 1
Sub Connect_web()
Dim ie As InternetExplorer
Dim doc As HTMLdocument
Dim ele As IHTMLElement
Dim col As IHTMLElementCollection
Dim ele_tmp As IHTMLElement
Set ie = New InternetExplorer
URL = "" ' Cannot provide
ie.Visible = True
ie.navigate URL
Do While ie.readyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading Page..."
DoEvents
End If
Loop
Set doc = ie.Document
Set ele = doc.getElementByClassName("GDB3EHGDHLC")
end sub
解决方案
让我们从四件事开始:
1)代替.Navigate
使用.Navigate2
2)使用适当的等待
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
3)更正您的Set ele
行的语法。您正在使用ByClassName
which 返回一个集合,因此是复数。您s
缺少element
.
正如您已声明ele
为单数(元素),也许首先将集合设置为单独的变量并索引到该集合。
Dim eles As Object, ele As Object
Set eles = doc.getElementsByClassName("GDB3EHGDHLC")
Set ele = eles(0)
4) 如果可能,您应该始终使用 id 而非其他属性,因为 id 通常检索速度更快。您的图像中有一个针对该类名称的 id(突出显示的元素)。我不会尝试全部输入。请使用片段工具分享您的 HTML,通过编辑您的问题,以便我们可以轻松地与您的 html 相关联。
Set ele = doc.getElementById("gwt-debug-restOfIdStringGoesHere")
推荐阅读
- jquery - 为什么音频对象在不播放音频时为 toISOString() 提供错误“无效时间值”?
- ms-access - 引用连接查询的 MS Access Dlookup
- docker - 如何使用特定用户组挂载文件
- java - 如何在 IDE 外使用 Java Mail 发送邮件
- python-3.x - 什么是自然语言处理上下文中的词注入,它的应用是什么?
- angular - Angular 2+在switchMap中启动带有间隔的可观察函数
- postman - Postman 401 未经授权使用 Ocelot
- java - 此环境中未提供编译器
- amazon-web-services - 使用具有 IAM 角色的 S3cmd 访问存储桶
- laravel - Laravel 如何将 onDelete('cascade') 修改为无操作迁移?