首页 > 解决方案 > 在不了解它的情况下获取 DOM-Element

问题描述

我想从某个网站访问响应的 html 元素。我已经将字符串变成了这样的 html 对象:

let el = new DOMParser().parseFromString(response, "text/html");

问题是我不能使用 id 或 class 或任何东西来识别这个元素。我唯一拥有的是如何到达该元素的路径。例如:

["body", "div::2", "div::1", "div::0", "div"]

我一直在尝试这样做:

        let el = doc;
        for(let i = 0; i < (path.length); i++){
            if(path[i].includes('::')){
                [elname, index, ...rest] = path[i].split('::');
                el = el.querySelectorAll(':scope > '+elname)[index]
            }else{
                elname = path[i];
                el = el.querySelectorAll(':scope > '+elname)[0]
            }
        }

但这让我很难过,因为我不知道为什么,但我发现我的 get 请求的响应与我在浏览器中看到的不同。有些元素只是不显示。所以它几乎每次都会失败,因为某些元素不在它应该在的位置。我的代码可能有问题还是有人可能有更好的选择?

感谢您的帮助:)

标签: javascriptdom

解决方案


也许尝试创建一个 xpath 查询并使用该 Xpath 是一种查询 xml 或 html 文档的语言,如果您可以计算 xpath 的查询以使用您的 chan 然后将此查询用作选择器。

[https://www.w3schools.com/xml/xpath_intro.asp]


推荐阅读