javascript - 在不了解它的情况下获取 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 请求的响应与我在浏览器中看到的不同。有些元素只是不显示。所以它几乎每次都会失败,因为某些元素不在它应该在的位置。我的代码可能有问题还是有人可能有更好的选择?
感谢您的帮助:)
解决方案
也许尝试创建一个 xpath 查询并使用该 Xpath 是一种查询 xml 或 html 文档的语言,如果您可以计算 xpath 的查询以使用您的 chan 然后将此查询用作选择器。
[https://www.w3schools.com/xml/xpath_intro.asp]
推荐阅读
- reactjs - React 受控组件不会像我预期的那样重新渲染/更新
- asp.net-core-mvc - Site.js 多久在 ASP.NET MVC 中读取一次?
- java - 如何使用替换方法将值存储在新数组中?
- javascript - 在 firestore (web) 中加入集合和子集合
- python - Tensorflow 错误:无法找到可以处理输入的数据适配器:
, 和内存错误 - docker - 如何在 Docker alpine 容器上安装 hwloc-dev 包
- java - LocalDate JPA 存储库奇怪的“功能”
- linux - 如何合并三个文件的内容(作为输入)并使用 shell 脚本显示
- mysql - mysql:连接两个表,然后拆分结果表的一列
- react-native - 如何在本机反应中检查互联网连接?