【问题标题】:Scraping data with no HTML element ID - Excel VBA抓取没有 HTML 元素 ID 的数据 - Excel VBA
【发布时间】: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 对象上还有其他可以调查的方法:getElementsByClassNamegetElementsByNamegetElementsByTagNamequerySelectorquerySelectorAll
  • 谢谢@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?

标签: html xml vba excel web-scraping


【解决方案1】:

我推荐querySelector 一些链接: |W2C queryselector| Microsoft queryselector|

这使用了现在在 Javascript 中非常常见的 CSS 选择器语法,因为它是 JQuery 导航 DOM 的方式。

Chrome 真的很有帮助,因为它的开发工具会在您移动鼠标时为每个元素提供 CSS 表达式。我认为您的屏幕截图来自 Chrome。

如果您仔细查看您的屏幕打印图像,您会看到 CSS 选择器进入单元格,因此“td.bet-buttons.lay-cell.ng-scope.first-lay-cell”这个在页脚栏和工具提示样式标签上给出

哎呀,我已经走了,并用红色圈出了表情。给你了

更新:实际上这里有一个不准确之处,完整路径由完整的页脚文本(即整行)给出,飞行工具提示给出了在给定父元素的情况下导航元素的标识符(即只是路径的一部分) .

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2015-07-15
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多