Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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 从在线Power BI仪表板中抓取数据_Javascript_Html_Web Scraping_Powerbi_Puppeteer - Fatal编程技术网

Javascript 从在线Power BI仪表板中抓取数据

Javascript 从在线Power BI仪表板中抓取数据,javascript,html,web-scraping,powerbi,puppeteer,Javascript,Html,Web Scraping,Powerbi,Puppeteer,我所在的地方政府已经将公开公共数据的想法扔进垃圾箱,并选择通过在线Power BI仪表板(没有下载选项)发布其新冠病毒-19。仪表板缺少静态url,但您可以 在线发布时,Power BI仪表盘具有复杂的HTML结构,似乎不像普通的HTMLdoc那样响应刮刀 使用(Node.js模块),我可以从仪表板的第一页中刮取一些元素。我真正需要的是进入第二页。要得到这个,我需要“点击”屏幕底部的右箭头。可以使用document.querySelector(“.pbi glyph chevronrightme

我所在的地方政府已经将公开公共数据的想法扔进垃圾箱,并选择通过在线Power BI仪表板(没有下载选项)发布其新冠病毒-19。仪表板缺少静态
url
,但您可以

在线发布时,Power BI仪表盘具有复杂的HTML结构,似乎不像普通的
HTML
doc那样响应刮刀

使用(Node.js模块),我可以从仪表板的第一页中刮取一些元素。我真正需要的是进入第二页。要得到这个,我需要“点击”屏幕底部的右箭头。可以使用
document.querySelector(“.pbi glyph chevronrightmedium”)
成功选择此选项

但是,我无法与该元素交互以访问第二页。虽然木偶演员可以找到它,但它不能点击它。这里的第一行是有效的;第二个没有:

await page.waitForSelector(".pbi-glyph-chevronrightmedium");
await page.click(".pbi-glyph-chevronrightmedium");
有什么想法吗?有另一个问题发表了,但它涵盖了不同的方面。我无法执行单击“下一页”箭头的简单任务

const puppeter=require(“木偶演员”);
异步函数scrape(){
var browser=wait puppeter.launch(),
page=wait browser.newPage();
返回新承诺(异步函数(解析、拒绝){
试一试{
等待页面。转到(“https://www.covid19.act.gov.au/updates/confirmed-case-information");
等待第页。等待选民(“col-md-12A”);
让dashboardUrl=wait page.evaluate(函数(){
返回文档。querySelector(“.col-md-12a”).href;
});
等待页面。转到(仪表板URL);
wait page.waitForSelector(“.pbi标志符号雪佛兰中”);
log(“找到了箭头!”);
等待页面。单击(“.pbi glyph chevronrightmedium”);
log(“单击箭头!”);
browser.close();
返回解析(“结束刮擦”);
}捕获(错误){
返回拒绝(错误);
}
});
}
刮
.then(console.log)
.catch(控制台错误)而不是

await page.click(".pbi-glyph-chevronrightmedium");
使用


太棒了-谢谢!不过,我对这个解决方案感到惊讶。在我的脚本(不是上面的脚本)中,在此之前我已经在页面上使用了
page.evaluate()
。我还能够在不使用
.evaluate()
方法的情况下成功单击其他页面元素。这是一个长期存在但尚未解决的错误吗?
await page.$eval(".pbi-glyph-chevronrightmedium", el => el.click());