【发布时间】: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