gpt4 book ai didi

excel - 循环抓取直到数字 VBA Excel Getelementby

转载 作者:行者123 更新时间:2023-12-04 20:15:29 41 4
gpt4 key购买 nike

我正在工作中抓取此页面,这是在登录后,但我会尽力解释情况

我有一个页面,我想在其中获取随机时间过去后出现的数字(取决于我们的服务器、计算机等的状态)直到 IE.readystat <> 4 才开始抓取,但数字仍然没有总是出现在稍晚一点

Sent = ie.document.getElementsByTagName("span")(25).innertext
Sheet4.Range("D" & i).Value = Sent

我回来的有 3 件事是:

1 运行时错误:91

2 文本“正在加载...”

3 12,403(我要找的号码)

我想知道是否有人知道我是否可以循环抓取直到我真正得到一个数字然后继续下一个任务?无需停留在“运行时错误:91”(只需让 excel 忽略该消息。

最佳答案

动态 JSON(或其他)内容确实会导致将网页检索为 ie.Busyie.ReadyState似乎已完成页面交付,但所需内容尚未到达。一段时间以来,我一直在与这些网站中的一个进行一场失败的战斗,而网页设计师的专业能力标准设置得很低并没有帮助。这是我目前使用的,大致翻译为您的目的。

 Dim url as String
url = "https://www.mydomain.com"
ie.Navigate2 url, (navNoHistory + navNoReadFromCache + navNoWriteToCache) ' &H2 + &H4 + &H8
Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE: DoEvents: Loop ' READYSTATE_COMPLETE is 4
Do While ie.Document.getElementsByTagName("span").length < 26: DoEvents: Loop
Sent = ie.document.getElementsByTagName("span")(25).innertext
Sheet4.Range("D" & i).Value = Sent

您正在寻找 26 日 <span>元素,因此如果页面永远不会发送至少 26 个 ,那么您将处于永远循环中。有办法 a) 最终放弃或 b) 发送 ie.Refresh再次尝试。如果将循环分成单独的代码行,则可以针对最终超时进行测试。

测试 .style.visible Loading... 文本的属性是另一种方法。不幸的是,如果没有看到该 HTML 代码的至少一部分,我就无法更具体。

关于excel - 循环抓取直到数字 VBA Excel Getelementby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27603027/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com