Javascript 遍历div元素
我是一个使用Javascript 遍历div元素,javascript,html,web-scraping,puppeteer,Javascript,Html,Web Scraping,Puppeteer,我是一个使用puppeter的javascript和web抓取的完全初学者,我正在尝试在一个简单的欧洲联赛回合中获得分数 通过检查上面的分数列表,我发现分数列表是一个div元素,其中包含其他div,并显示统计数据 HTML用于两支球队之间的一场比赛(本例下面的比赛有更多div) //分数表 //数据代码增加到“euro_245”。。。 //更多团队 游戏框最准确的选择器是div.game.played(一个既有.game又有.playedCSS类的div),您需要计算符合此标准的元素。可以
puppeter
的javascript和web抓取的完全初学者,我正在尝试在一个简单的欧洲联赛回合中获得分数
通过检查上面的分数列表,我发现分数列表是一个div
元素,其中包含其他div
,并显示统计数据
HTML
用于两支球队之间的一场比赛(本例下面的比赛有更多div)
//分数表
//数据代码增加到“euro_245”。。。
//更多团队
游戏框最准确的选择器是div.game.played
(一个既有.game
又有.played
CSS类的div),您需要计算符合此标准的元素。可以使用(page.$$eval(选择器,pageFunction[,…args])
)在页面内运行Array.from(document.queryselectoral(选择器))
,并将其作为第一个参数传递给pageFunction
当我们为特定的数据字段使用元素索引时,我们使用元素的长度运行一个常规的for循环
如果您需要特定范围的“euro_xyz”,您可以使用方法获取数据代码
属性值,并对照所需的“xyz”编号检查其编号
为了收集每个游戏的数据,我们可以定义一个收集器数组(gameObj
),它可以随着每次迭代而扩展。在每次迭代中,我们用实际数据填充actualGame
对象
重要的是要确定哪些包含相应的数据值,例如:主俱乐部的名称是'div.game.played>a>div:nth child(1)>span:nth child(1)
div child编号选择俱乐部,而span child编号决定俱乐部名称和积分。循环的[i]
索引负责获取正确游戏盒的值(这就是为什么它在开始时被计算)
例如:
const allGames=wait page.$$('div.game.played')
const allGameLength=等待页面。$$eval('div.game.played',el=>el.length)
常量gameObj=[]
for(设i=0;iel.getAttribute('data-code'),allGames[i])
dataCode=parseInt(dataCode.replace('euro_','')
如果(数据代码>243){
常数实际值={
家庭俱乐部:等待页面。评估(el=>el.textContent,(等待页面。$$('div.game.played>a>div:n个孩子(1)>span:n个孩子(1)'))[i]),
awayClub:wait page.evaluate(el=>el.textContent,(wait page.$$('div.game.played>a>div:n个孩子(2)>span:n个孩子(1)')[i]),
主页点:等待页面。评估(el=>el.textContent,(等待页面。$$('div.game.played>a>div:n个孩子(1)>span:n个孩子(2)'))[i]),
awayPoints:wait page.evaluate(el=>el.textContent,(wait page.$$('div.game.played>a>div:n个孩子(2)>span:n个孩子(2)'))[i]),
游戏日期:等待页面。评估(el=>el.textContent,(等待页面。$$('div.game.played>a>div:n个孩子(3)>span:n个孩子(1)'))[i])
}
游戏对象推送(实际名称)
}
}捕获(e){
控制台错误(e)
}
}
log(JSON.stringify(gameObj))
在Puppeter中有一种方法与您的sleep
函数的用途相同,但您也可以等待选择器出现()