如何通过Apify下载文件

How to download files through Apify

我正在使用 apify/puppeteer-scraper 单击下载按钮并将此页面中的数据导出为 CSV:

我已经成功地模拟了下载按钮(在右下角)的鼠标点击,并且一直到 CSV 下载为止。现在我想将生成的 CSV 文件下载到一个位置,以便可以使用它。

有办法吗?我尝试导入 require('fs'),但它似乎无法通过 Apify 抓取器工作。

这是我目前在 Pagefunction(context):

中的代码

const [response] = await Promise.all([
  await page.click('#download-ToolbarButton > span.tabToolbarButtonImg.tab-icon-download'),
  await page.waitForSelector('#DownloadDialog-Dialog-Body-Id > div > button:nth-child(4)'),
  await page.focus('#DownloadDialog-Dialog-Body-Id > div > button:nth-child(4)'),
  await page.click('#DownloadDialog-Dialog-Body-Id > div > button:nth-child(4)'),
  await page.waitFor(5000),
  await page.waitForSelector('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.foyjxgp > div:nth-child(2) > div > label:nth-child(2)'),
  await page.focus('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.foyjxgp > div:nth-child(2) > div > label:nth-child(2)'),
  await page.waitForSelector('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.fdr6v0d > button'),

  await page.click('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.foyjxgp > div:nth-child(2) > div > label:nth-child(2)'),
  await page.waitFor(60000),
  await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './downloads'})
  // await  page.hover('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.fdr6v0d > button'),
  // await page.click('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.fdr6v0d > button'),
  // await page.waitFor(5000)
  // page.click('#export-crosstab-options-dialog-Dialog-BodyWrapper-Dialog-Body-Id > div > div.foyjxgp > div:nth-child(2) > div > label:nth-child(2)')
]);

Puppeteer scraper 不打算由其他库扩展,即使是本机库,虽然您可以使用下面链接的解决方案作为解决方法,但建议您使用自定义 actor 而不是 ready-made scrapers 这将允许你需要额外的库。如果您不能自己制作这样的演员,您可以 post 在市场上申请项目。 https://help.apify.com/en/articles/3211799-how-to-add-external-libraries-to-web-scraper https://apify.com/apify/puppeteer-scraper#context

https://sdk.apify.com/docs/guides/getting-started https://apify.com/marketplace