【发布时间】:2016-07-04 02:51:56
【问题描述】:
我花了几个小时研究这个,找不到解决方案。
我正在尝试在谷歌上做一个相对简单的 VBA 网页抓取。我目前正忙于将文本输入到谷歌的搜索框中。我见过三种不同的路线,所有这些都会导致错误。
一条路线是下面的代码
Dim aEXPLORER as InternetExplorer
Set aEXPLORER = New InternetExplorer
Do While aEXPLORER.readyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading google..."
DoEvents
Loop
此时,第一条路线是这样的:
aEXPLORER.Document.Getelementbyid("idhere").value
问题出在 .document 之后我的智能感知停止工作。如果我继续编写代码,它就会出错。
路线二 - 在顶部添加暗淡的 aHTML 作为 HTMLDocument
Set aHTML = aEXPLORER.document
aHTML.getElementById("idhere").value
当我到达 getelementbyID 标签时,这稍微成功了一点,但我的智能感知在任何地方都找不到 .value。我有很多其他选项,例如内部文本等。但没有 .value 像几个人在在线教程中使用的那样。
我查看了我的对象库,但在我的 HTMLDocument 库、InternetExplorer 库或我的 Excel 库中没有看到 .value。
问题必须是声明变量或对象或类似性质的东西。为什么我永远得不到 .value?第一种方法为三个不同的人在线展示教程,为什么我这样做时它不起作用?他们如何在没有在顶部设置 HTML 文档的情况下获得 Getelementbyid 标记?作为参考,这个受欢迎的教程使用方法一,“http://analystcave.com/web-scraping-tutorial/”,大约完成了教程的 75%。
非常感谢您成为如此乐于助人的人。我目前非常有限。
答案归于 Berco!
问题 1:我使用了错误的 ID 标识符。解决方案 1:将每个交互点的 HTML 代码复制并粘贴到 VBA 中,将其注释掉,然后直接从中复制/粘贴标识符。这还有其他几个好处。
问题 2:我担心在 .value 处丢失智能感知。解决方案 2:没有智能感知并不意味着代码不起作用。这只是意味着代码没有设置暗淡/设置。要解决这个问题,您必须将该项目调暗为 HTMLInput,这需要检查 Microsoft HTML 对象库引用。但是,只要检查了 HTML 对象库引用,即使没有智能感知,您仍然可以使用 .value 等。
【问题讨论】:
标签: excel vba web screen-scraping libraries