gpt4 book ai didi

javascript - 使用VBScript从html中的特定节点中提取值

转载 作者:行者123 更新时间:2023-11-30 20:08:16 32 4
gpt4 key购买 nike

有没有办法在 Internet Explorer 中使用 Vbscript 提取特定 html 元素的 DomXPath???

 Sub WaitForLoad 'Sub to wait for browser to load
Do While IE.Busy
WScript.Sleep 10
Loop
End Sub

Dim IE
Dim example1
Dim example2

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.lotteimall.com/goods/viewGoodsDetail.lotte?goods_no=12570568"
WaitForLoad

Set objRoot = ie.document

MsgBox objRoot.getElementById("win10").name


Dim vXPath : vXPath = "//*[@id='win10']"

Set example1 = objRoot.selectSingleNode(vXPath) 'this works for xml
Set example2 = objRoot.getElemetByXPath(vXPath) 'this works in javascript

'none of these works in IE html

在 IE 文档对象中没有像 'getElemetByXPath' 这样的 DomXPath 函数,我仍然无法返回 DomXPath 的正确方法。

至于javascript,

    function XPath(elm) {
for (segs = []; elm && elm.nodeType == 1; elm = elm.parentNode) {
if (elm.hasAttribute('id')) {
segs.unshift('id("' + elm.getAttribute('id') + '")')
return segs.join('/')
}
else if (elm.hasAttribute('class'))
segs.unshift(elm.localName.toLowerCase() + '[@class="' + elm.getAttribute('class') + '"]')
else {
for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling)
if (sib.localName == elm.localName) i++
segs.unshift(elm.localName.toLowerCase() + '[' + i + ']')
}
}
return segs.length ? '/' + segs.join('/') : null
}
var result = windows.document.evaluate("//div[@class='division_product_tab']//img", document, null, XPathResult.ANY_TYPE, null);

var node, nodes = []
while (node = result.iterateNext())
nodes.push(XPath(node));

console.log(nodes);

这将返回特定于对象的 DomXpath。在这种情况下,“//div[@class='division_product_tab']//img”是 img 对象。但这只适用于开发工具。

希望有解决办法

最佳答案

你可以试试to use CSS Selectors :

Set oIE = CreateObject("InternetExplorer.Application")
With oIE
.Visible = True
.Navigate "http://www.lotteimall.com/goods/viewGoodsDetail.lotte?goods_no=12570568"
Do While .Busy Or .ReadyState <> 4
WScript.Sleep 10
Loop
Do While .Document.readyState <> "complete"
WScript.Sleep 10
Loop
Set oNode = .Document.querySelector("div.division_product_tab img")
MsgBox oNode.src
End With

.querySelector() 返回第一个节点,.querySelectorAll() 返回节点集合。

关于javascript - 使用VBScript从html中的特定节点中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643103/

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