从在线Power BI仪表板中删除数据



我的地方政府将开放公共数据的想法抛到了垃圾桶中,而是选择通过在线Power BI仪表板发布其新冠肺炎更新(无下载选项(。仪表板缺少静态url,但您可以在此处访问它。

在线发布时,Power BI仪表板具有复杂的HTML结构,似乎无法像普通的HTML文档那样对scraper做出响应。

使用Puppeter(一个Node.js模块(,我可以从仪表板的第一页中抓取一些元素。我真正需要的是访问第二页。要得到这个,我需要"点击"屏幕底部的右箭头。这可以通过document.querySelector(".pbi-glyph-chevronrightmedium")成功选择。

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

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

有什么想法吗?发布了另一个关于从Power BI仪表板中抓取的问题,但它涵盖了不同的方面。我无法执行单击"下一页"箭头的简单任务。

const puppeteer = require("puppeteer");
async function scrape() {
var browser = await puppeteer.launch(),
page = await browser.newPage();
return new Promise(async function(resolve, reject) {
try {
await page.goto("https://www.covid19.act.gov.au/updates/confirmed-case-information");
await page.waitForSelector(".col-md-12 a");
let dashboardUrl = await page.evaluate(function() {
return document.querySelector(".col-md-12 a").href;
});
await page.goto(dashboardUrl);
await page.waitForSelector(".pbi-glyph-chevronrightmedium");
console.log("Found the arrow!");
await page.click(".pbi-glyph-chevronrightmedium");
console.log("Clicked the arrow!");
browser.close();
return resolve("end scrape");
} catch (error) {
return reject(error);
}
});
}
scrape()
.then(console.log)
.catch(console.error);

而不是

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

使用

await page.$eval(".pbi-glyph-chevronrightmedium", el => el.click());

(来源(

最新更新