如何通过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
我正在使用 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