【问题标题】:Error with VBA Web ScrapeVBA Web 抓取错误
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • Berco,只是想让您知道,我从这里一直到工作中的管理任务完全自动化。感谢您的投资!
    【解决方案2】:

    答案归于 Berco!

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

    问题 2: 我担心失去 .value 的智能感知。 解决方案 2: 没有智能感知并不意味着代码不起作用。这只是意味着代码没有设置暗淡/设置。要解决这个问题,您必须将该项目调暗为 HTMLInput,这需要检查 Microsoft HTML 对象库引用。但是,只要检查了 HTML 对象库引用,即使没有智能感知,您仍然可以使用 .value 等。

    【讨论】:

    • 请使用您问题上的编辑链接添加其他信息。 Post Answer 按钮应仅用于问题的完整答案。 - From Review
    • 这是我提出的问题的答案:)
    • 可以肯定的是,如果是答案,它应该作为答案发布正确吗?其他人刚刚回答了另一个问题,我想通过表明这一点来确保回馈社区:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2023-02-25
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多