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

标签 javascript html web-scraping powerbi puppeteer

我的本地政府已经将开放公共(public)数据的想法扔进了垃圾箱,而是选择通过在线 Power BI 仪表板(没有下载选项)发布其 COVID-19 更新。仪表板缺少静态 url , 但你可以 access it here .

在线发布时,Power BI 仪表板具有复杂的 HTML 结构,似乎无法像正常的 HTML 那样响应抓取工具。博士。

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

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

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

有任何想法吗?发布了另一个关于 scraping from a Power BI dashboard 的问题但它涵盖了不同的方面。我无法执行单击“下一页”箭头的简单任务。

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());

(source)

关于javascript - 从在线 Power BI 仪表板中抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61180924/

相关文章:

javascript - Windows8 中的 ActiveX FSO (FileSystemObject) |互联网浏览器 10

javascript - 正则表达式:替换单词前面

javascript - 如何使用相同的 script.js 文件通过多个 ID 调用不同的 CSS 类

web-scraping - 如何修复 yaml 文件中的 "mapping values are not allowed in this context "错误?

python - 为什么即使已经安装了 Scrapy 模块,python 也会抛出 "ImportError: No module named linkextractor"?

javascript - 解析 CSV 文件时出现问题

javascript - 未显示 Chrome 选项卡时设置间隔 'stacks'

javascript - NodeJS 中的 POST 调用后 HTML 页面不会改变

html - 为什么 iframe 不是递归的?

python - 使用请求抓取动态页面