【发布时间】:2020-04-13 00:53:20
【问题描述】:
如标题所说,如何从一个滚动的 div 中获取所有元素? 滚动列表中的元素是动态加载和销毁的。
我试图从这个网站上抓取所有课程名称: https://public.enroll.wisc.edu/search?term=1204
下面的代码只能使用一次:
let list = document.getElementsByClassName('md-virtual-repeat-scroller')[0]
let childs = document.getElementsByClassName("result__name")
console.log(childs[0].innerText)
但是,如果我这样做,我会得到相同的结果 10 次:
let list = document.getElementsByClassName('md-virtual-repeat-scroller')[0]
for(let i = 0; i < 10; i++) {
let childs = document.getElementsByClassName("result__name")
for(let j = 0; j < childs.length; j++) {
console.log(childs[j].innerText)
}
// scroll by 1000px every time
list.scrollBy(0, 1000)
}
我不知道是什么问题。是因为 scrollBy() 是 异步 工作的吗?但我尝试使用异步和等待。还是不行。
【问题讨论】:
-
console.log(childs[0].innerText)你是说console.log(childs[i].innerText)吗?使用[0],是的,您每次都会得到相同的结果,因为您访问的是同一个元素 -
好吧,但是列表是滚动的,所以即使是 childs[0] 也会有所不同,因为它是一个动态列表
标签: javascript node.js web-crawler single-page-application puppeteer