[英]Selecting a div within a class with Puppeeter
hi im trying to select a given div with in a class.嗨,我正在尝试 select 在 class 中的给定 div。 The html is set up like so: html 的设置如下:
<div class="items">
<div>fist div</div>
<div>second div</div>
<div>third div</div>
</div>
<div class="items">
<div>fist div two</div>
<div>second div two</div>
<div>third div two</div>
</div>
<div class="items">
<div>fist div three</div>
<div>second div three</div>
<div>third div three</div>
</div>
my script is like this:我的脚本是这样的:
let info = await page.evaluate(() => {
let data = [];
let elements = document.getElementsByClassName("items");
let yr = elements[0].getElementsByTagName("div");
for (var i of yr) {
data.push(i.textContent);
}
return data;
});
this returns all the divs inn ann array like so这会像这样返回所有 divs inn 数组
["fist div"],["second div"],["third div"]
what im trying to achive is to get all the divs inn all the classes.我试图实现的是让所有的 div 客栈所有的课程。 so it would look like:所以它看起来像:
[
["fist div"],["second div"],["third div"],
["fist div two"],["second div two"],["third div two"],
["fist div three"],["second div three"],["third div three"],
]
i was making a foor loop but i cant seem to ge it to work.我正在做一个循环,但我似乎无法让它工作。 any ideas?有任何想法吗?
Well, you'll need two loops:好吧,你需要两个循环:
let info = await page.evaluate(() => {
let data = [];
let elements = document.getElementsByClassName("items");
for (var j in elements) {
let yr = elements[j].getElementsByTagName("div");
for (var i of yr) {
data.push(i.textContent);
}
}
return data;
});
or, more readably:或者,更易读:
let info = await page.evaluate(() => {
let data = [];
document.getElementsByClassName("items").forEach(e =>
e.getElementsByTagName("div").forEach(i => data.push(i.textContent))
);
});
just add for loop and get the length to get all elements, when you use elements[0]
you just get the first <div class="items">
只需添加 for 循环并获取获取所有元素的长度,当您使用elements[0]
时,您只需获得第一个<div class="items">
let info = await page.evaluate(() => { let data = [];
let elements = document.getElementsByClassName("items");
for(let x=0;x<elements.length;x++){
let yr = elements[x].getElementsByTagName("div");
for (var i of yr) {
data.push(i.textContent);
}
}
return data;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.