gpt4 book ai didi

node.js - 如何使用 headless : true? 使用 puppeteer 下载文件

转载 作者:IT老高 更新时间:2023-10-28 23:01:34 25 4
gpt4 key购买 nike

我一直在运行以下代码,以便从网站 http://niftyindices.com/resources/holiday-calendar 下载 csv 文件:

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

使用 headless: false 它可以工作,它将文件下载到 /Users/user/Downloadsheadless: true 不起作用。

我在 macOS Sierra (MacBook Pro) 上使用 puppeteer 版本 1.1.1 运行它,它将 Chromium 版本 66.0.3347.0 拉入 .local- chromium/ 目录并使用 npm initnpm i --save puppeteer 进行设置。

知道有什么问题吗?

提前感谢您的时间和帮助,

最佳答案

我花了几个小时研究 this thread和 Stack Overflow 昨天,试图弄清楚如何通过在经过身份验证的 session 中单击 headless 模式下的下载链接来让 Puppeteer 下载 csv 文件。此处接受的答案在我的情况下不起作用,因为下载不会触发 targetcreated,并且无论出于何种原因,下一个答案都没有保留经过身份验证的 session 。 This article挽救了这一天。简而言之,fetch。希望这对其他人有所帮助。

const res = await this.page.evaluate(() =>
{
return fetch('https://example.com/path/to/file.csv', {
method: 'GET',
credentials: 'include'
}).then(r => r.text());
});

关于node.js - 如何使用 headless : true? 使用 puppeteer 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49245080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com