Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 遍历div元素_Javascript_Html_Web Scraping_Puppeteer - Fatal编程技术网

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
函数的用途相同,但您也可以等待选择器出现()