VBA 网络抓取错误

Error with VBA Web Scrape

我花了几个小时研究这个,找不到解决方案。

我正尝试在 google 上做一个相对简单的 VBA 网络抓取。我目前无法在 google 的搜索框中输入文本。我看到了三种不同的路由,都导致错误。

一条路线如下代码

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 之后我的智能感知停止工作。如果我继续写代码,它就会出错。

路线二 - 在顶部添加 dim aHTML as HTMLDocument

Set aHTML = aEXPLORER.document
aHTML.getElementById("idhere").value

当我到达 getelementbyID 标记时,这略微成功,但我的智能感知在任何地方都找不到 .value。我有很多其他选项,如 innertext 等。但没有像几个人在在线教程中使用的 .value。

我查看了我的对象库,但在我的 HTML 文档库或我的 InternetExplorer 库或我的 Excel 库中没有看到 .value。

问题一定出在声明变量或对象或类似性质的东西上。为什么我永远得不到 .value?第一种方法对三个不同的人显示教程在线有效,为什么我这样做时它不起作用?他们如何在不在顶部设置 HTML 文档的情况下获得 Getelementbyid 标签?作为参考,这个流行的教程使用方法一,“http://analystcave.com/web-scraping-tutorial/”大约 75% 的教程。

非常感谢您提供的帮助。我已无计可施了。


答案归功于 Berco!

问题 1:我使用了错误的 ID 标识符。解决方案 1:将每个交互点的 HTML 代码复制并粘贴到 VBA 中,将其注释掉,然后直接从中 copy/paste 标识符。这还有其他几个好处。

问题 2:我担心在 .value 处失去智能感知。解决方案 2:没有智能感知并不意味着代码无法运行。这只是意味着代码没有设置 dim/set。要解决这个问题,您必须将该项目调暗为 HTML 输入,这需要检查 Microsoft HTML 对象库参考。但是,只要选中 HTML 对象库引用,即使没有智能感知,您仍然可以使用 .value 等。

谷歌搜索栏的 ID 是 (id="lst-ib")。尝试类似的东西:

dim searchbar as object

set searchbar = aEXPLORER.Document.Getelementbyid("lst-ib")
searchbar.value = "I wanna google this"

答案归功于 Berco!

问题 1: 我使用了错误的 ID 标识符。 解决方案 1: 将每个交互点的 HTML 代码复制并粘贴到 VBA 中,将其注释掉,然后直接从中 copy/paste 标识符。这还有其他几个好处。

问题二: 我担心在 .value 处失去智能感知。 解决方案 2: 没有智能感知并不意味着代码无法运行。这只是意味着代码没有设置 dim/set。要解决这个问题,您必须将该项目调暗为 HTML 输入,这需要检查 Microsoft HTML 对象库参考。但是,只要检查了 HTML 对象库引用,即使没有智能感知,您仍然可以使用 .value 等。