【问题标题】:Create relationship between DOM Nodes创建 DOM 节点之间的关系
【发布时间】:2022-02-02 01:28:44
【问题描述】:

我正在尝试抓取类似电子商务的网站,我需要在其中建立列表标题与其描述之间的关系。问题是我不知道如何可靠地这样做,因为有些列表有描述 - 有些没有。结果,我无法可靠地使用 for 循环将标题与描述相关联。能否请您提出您的建议?

这是我的想法,但它不能可靠地工作:

const allTitles= document.querySelectorAll(".title");
const arrayOfTitlesAndDescription= allTitles.map((title,index) => { title :document.querySelectAll(".description")[index] } )

非常感谢!

This image would help you understand better , if the question is unclear

编辑:

const allCards= document.querySelectorAll(".card");
/// also tried with allCards directly
Array.from(allCards).forEach(card => card.querySelector(".description"));
/// This works, but I don't know how to tell which .card is which
document.querySelectorAll(".card").querySelector(".description")

【问题讨论】:

  • 是每个列表的.title.description 包裹在一个元素中。如果是这样,您可以遍历所有这些类型的元素并获取 .title.description 子元素。
  • @Titus 非常感谢您的回复!是的,他们可能是。我现在会检查你的建议。如果我理解正确,说父类是 card ,那么我将遍历 document.querySelectAll(".card") 然后以 document.querySelectAll(".card.title") 访问标题和描述?
  • 类似的东西。这是正确的方法[...document.querySelectAll(".card")].map(card => ({ title: card.querySelector('.title'), description: card.querySelector('.description') }))。您应该将querySelector(...) 用于子元素,并且应该在.card 元素上而不是在document 上调用它。
  • @Titus 哇!不知道,非常感谢!
  • @Titus 我是否必须转换我循环通过的所有节点数组?因为当我在 .map 中执行 querySelector(...) 时,它始终是未定义的

标签: javascript node.js puppeteer


【解决方案1】:

搜索包含 .title.description 的一些 div 标签,并且对于每个这样的标签搜索天气,它的孩子是否有任何描述。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
相关资源
最近更新 更多