关于puppeteer解决headless-chrome 无法下载文件的问题

项目场景:

puppeteer通过headless chrome 下载文件失败

问题描述:

我想通过puppeteer nodejs 写一些脚本,然后通过服务调用他,结果发现一切运行正常,但是文件无法下载,最后发现是浏览器问题,浏览器无头模式下一般无法下载文件,但是这是我必要的步骤


解决方案:

最后解决方案是在,自定义函数,这里的downloadPath需要你自己定义,

@Override
           function setDownloadBehavior(page,downloadPath){
   
                    return page._client.send('Page.setDownloadBehavior', {
   
                        behavior: 'allow',
                        downloadPath
                    });
         
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在 Puppeteer 中将 `headless` 设置为 `true`,可能会导致无法下载文件。这是因为 Chrome 在无头模式下默认禁用了文件下载。 为了解决这个问题,你可以尝试以下两种方法: 1. 修改 Chrome 启动参数:在 Puppeteer 的 `launch` 方法中,你可以传递一个 `args` 数组来设置 Chrome 的启动参数。尝试添加 `--disable-gpu`、`--disable-software-rasterizer` 和 `--disable-dev-shm-usage` 参数,这些参数可以帮助解决文件下载问题。示例代码如下: ```javascript const puppeteer = require('puppeteer'); async function downloadFile() { const browser = await puppeteer.launch({ headless: true, args: [ '--disable-gpu', '--disable-software-rasterizer', '--disable-dev-shm-usage' ] }); const page = await browser.newPage(); // 其他操作... await browser.close(); } downloadFile(); ``` 2. 使用无头 Chrome 的可执行文件Puppeteer 提供了一个 `executablePath` 选项,可以指定使用自定义的 Chrome 可执行文件路径。你可以下载一个适用于你系统的 Chrome 可执行文件,并将其路径指定给 `executablePath`。这样,你就可以使用具有默认文件下载功能的完整版 Chrome 运行 Puppeteer。 ```javascript const puppeteer = require('puppeteer'); async function downloadFile() { const browser = await puppeteer.launch({ headless: true, executablePath: '/path/to/chrome/executable' }); const page = await browser.newPage(); // 其他操作... await browser.close(); } downloadFile(); ``` 请根据你的需求选择其中一种方法尝试解决文件下载问题。希望能帮到你!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值