For loop 创建循环以获取元素内部HTML
我试图创建一个循环,循环遍历每个元素并读取其所有子元素的内部html。我在遍历每个子元素时遇到困难 以下是我正在使用的html示例:For loop 创建循环以获取元素内部HTML,for-loop,web-scraping,puppeteer,For Loop,Web Scraping,Puppeteer,我试图创建一个循环,循环遍历每个元素并读取其所有子元素的内部html。我在遍历每个子元素时遇到困难 以下是我正在使用的html示例: <div id="section-content"> <div class="matches"> <div class="day day-28-1"> <h4>Sat, March 28, 2020</h4> <div clas
<div id="section-content">
<div class="matches">
<div class="day day-28-1">
<h4>Sat, March 28, 2020</h4>
<div class="day-wrap">
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">2:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">3:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">4:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
</div>
</div>
<div class="day day-28-1">
<h4>Sat, March 29, 2020</h4>
<div class="day-wrap">
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">2:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">3:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
<div class="match region-7-57d5ab4-9qs98v">
<h3 class="time">4:00PM
<span>(Central Daylight Time)</span>
<span class="fr">Best of 7</span>
</h3>
</div>
</div>
</div>
</div>
</div>
2020年3月28日,星期六
下午2:00
(中央夏时制)
七局之最
下午三点
(中央夏时制)
七局之最
下午四点
(中央夏时制)
七局之最
2020年3月29日,星期六
下午2:00
(中央夏时制)
七局之最
下午三点
(中央夏时制)
七局之最
下午四点
(中央夏时制)
七局之最
我试图读取每个h3元素的内部html。这就是我对它的看法
//Gets number of ".day" elements in the html file
const dayElement = totalMatches[0].evaluate(() => {
return document.querySelector('.matches').childElementCount;
});
const dayCount = await dayElement.then(function(dayCount) {
return dayCount;
});
//iterates through each ".day" element
for (j = 0; j < dayCount; j++) {
//This determines how many times the inner for loop will run
const matchElements = await page.$$('#section-content > div.matches > div.day');
const matchCount = await matchElements[j].$eval('div', (div) => div.childElementCount);
console.log(matchCount);
const gameTimeElements = await page.$$('#section-content > div.matches > div.day > .day-wrap');
//iterates through each ".match" of specified ".day" element
for (i = 1; i <= matchCount; i++) {
const element = await gameTimeElements[j].$eval('h3', (h3) => h3.innerHTML);
console.log(element);
}
i = 1;
}
//获取html文件中“.day”元素的数量
const dayElement=totalMatches[0]。计算(()=>{
return document.querySelector('.matches').childElementCount;
});
const dayCount=await daycelement.then(函数(dayCount){
返回天数;
});
//遍历每个“.day”元素
对于(j=0;jdiv.matches>div.day”);
const matchCount=wait matchElements[j]。$eval('div',(div)=>div.childElementCount);
console.log(匹配计数);
const gameTimeElements=wait page.$$(“#section content>div.matches>div.day>.day wrap”);
//迭代指定的“.day”元素的每个“.match”
for(i=1;i h3.innerHTML);
控制台日志(元素);
}
i=1;
}
我意识到我的第二个for循环不会遍历每个“.match”元素。它目前只抓到第一个。我只是不明白如何迭代每个元素 一次拿到所有的不是更容易吗
await page.evaluate(() => [...document.querySelectorAll('h3')].map(h3 => h3.innerHTML))
这不是我真正想要的。但这正是我所需要的。我完全忽略了这一点。谢谢!