【发布时间】:2017-06-16 07:36:46
【问题描述】:
为了让您快速了解我正在尝试做的事情 - 我正在尝试通过 excel VBA 通过一个宏从多个博彩公司和交易所获取赔率,该宏将触发每秒钟刷新一次价格..
虽然我对引用单元格元素(甚至是行元素,然后索引单元格(如下面的代码)感到满意),但某些网站(甚至只是网站中的某些页面)似乎没有引用任何我对 HTML 太绿的 ID 并且一般报废以解决此问题 - 这是我遇到的问题的一个示例(爆炸到最后):
现在,如果有 appIE.document.getElementById() 的替代品,我完全赞成,因为下面的按钮类为我提供了更多信息,然后只有 3.1 价格,例如流动性(在上面的示例中,有 1079 欧元可供放置在这个交易所以那个价格)我认为这将涉及绝对引用“下注按钮价格”和“下注按钮大小”类?
我目前的代码涉及声明和分配appIE:
Dim appIE as Object
Set appIE = CreateObject("internetexplorer.application")
声明元素并赋值:
Dim targetElement As Object
Set targetElement = appIE.document.getElementById("xxxx")
将值存储为双精度
Dim myValue as Double
myValue = targetElement.innerHTML
然后用myValue填充目标单元格
我们将不胜感激任何和所有帮助 - 如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
HTMLDocument对象上还有其他可以调查的方法:getElementsByClassName、getElementsByName、getElementsByTagName、querySelector和querySelectorAll。 -
谢谢@RobinMackenzie - 很快,有没有像
getElementsByClassName([Call name]).Price这样的属性来返回价格属性(在上面的例子中是2.68)和getElementsByClassName([Call name]).Size会返回1079 欧元等等。 - 我目前正在工作,因此,出于显而易见的原因,我目前无法玩弄它 - 无论哪种方式,我都会在回家时进一步玩弄它。感谢您的帮助! -
您仍然需要使用 DOM 并确定哪个元素具有您想要的数据项。如果您从按钮开始,您仍然需要向下工作几个级别。它是一棵带有分支的树,您可以在其中导航每个分支...
-
@RobinMackenzie 谢谢 - 明白(我想!)但鉴于“分支”具有标准化的命名约定,我不能将子类的名称声明为字符串(在上面的示例中它会是“bet-button-price”(例如 sPrice_String)和“bet-button-size”,然后将它们引用为
getElementsByClassName([Class name here]).class(sPrice_String).innerHTML? -
看
querySelector-msdn.microsoft.com/en-us/library/cc288169(v=vs.85).aspx
标签: html xml vba excel web-scraping