javascript - 有没有办法根据网页中的已知值计算 XPath?

标签 javascript xpath

据我了解,XPath 是一种在 XML 文档中导航元素的方法。
方向是 XPath -> element。
你如何反其道而行之?也就是说,根据已知的元素值计算 XPath?

例如,如何在 stackoverflow header 中找到“faq”链接的 xpath?
语言并不那么重要,我更感兴趣的是有助于我计算 XPath 的算法和/或库/技术。

最佳答案

这是一个简单的 JS 函数来完成它。它仅使用 previousSibling、nodeType 和 ParentNode,因此它应该可以移植到其他语言。然而,结果是不可读的(对于人类来说),并且在面对页面更改时不会特别鲁棒。

根据我的经验,如果手工编写 XPath 会更有用。但是,您当然可以制定一种算法来生成更漂亮(如果可能更慢)的结果。

function getXPath(node)
{
    if(node == document)
    return "/";
    var xpath = "";
    while (node != null && node.nodeType != Node.DOCUMENT_NODE)
    {
    print(node.nodeType);
    var pos = 1, prev;
    while ((prev = node.previousSibling) != null)
    {
        node = prev
        pos++;
    }
    xpath = "/node()[" + pos + "]" + xpath;
    node = node.parentNode;
    }
    return xpath;
}

关于javascript - 有没有办法根据网页中的已知值计算 XPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900808/

相关文章:

javascript - 当在带有表情符号的字符串上使用 es6 扩展运算符时,数组中的 "Holes"

ruby - Nokogiri xpath() 'or' 运算符?

python - 如何从 XPath 中的类属性获取标题(Python/scrapy)

javascript - 为什么我可以使用 Javascript 在 keydown 而不是 keyup 上阻止默认事件?

java - 如何切换到框架并访问其中的元素?

xml - 使用XPATH,如何选择包含特定字符串的任何节点

python - 复制 xpath 未提供正确的 xpath?

javascript - 从字符串构造函数

javascript - 有没有办法通过多个元素选择文本?

javascript - Yii2-dynamicforms 和 javascript