我一直在运行以下代码来下载csv
来自网站的文件http://niftyindices.com/resources/holiday-calendar
:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.goto('http://niftyindices.com/resources/holiday-calendar');
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow',
downloadPath: '/tmp'})
await page.click('#exportholidaycalender');
await page.waitFor(5000);
await browser.close();
})();
with headless: false
它有效,它将文件下载到/Users/user/Downloads
. with headless: true
这是行不通的。
我使用 puppeteer 版本在 macOS Sierra (MacBook Pro) 上运行此程序1.1.1
拉取 Chromium 版本66.0.3347.0
into .local-chromium/
目录和使用npm init
and npm i --save puppeteer
设置它。
知道出了什么问题吗?
预先感谢您的时间和帮助,
我花了几个小时仔细研究这个线程 https://github.com/GoogleChrome/puppeteer/issues/299昨天在 Stack Overflow 上尝试找出如何让 Puppeteer 通过在经过身份验证的会话中以无头模式单击下载链接来下载 csv 文件。这里接受的答案在我的情况下不起作用,因为下载不会触发targetcreated
,而下一个答案,无论出于何种原因,都没有保留经过身份验证的会话。本文 https://oncletom.io/2018/puppeteer-download-file/挽救了这一天。简而言之,fetch
。希望这可以帮助其他人。
const res = await this.page.evaluate(() =>
{
return fetch('https://example.com/path/to/file.csv', {
method: 'GET',
credentials: 'include'
}).then(r => r.text());
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)