You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Playwright Node.js爬取本地HTML文件标题报ERR_FILE_NOT_FOUND如何解决

问题根因

  • 路径转义错误:JavaScript字符串中\为转义字符,你直接写的C:\Users\weske\Desktop\WebScraping\index.html中所有路径分隔符被转义,最终传递的路径和报错中显示的无分隔符路径一致,导致找不到文件。
  • 缺少本地文件协议:访问本地文件必须添加file://协议头,否则Playwright会将路径识别为网络地址请求,自然无法找到资源。
  • 未捕获异步异常:异步函数main()执行时没有添加异常捕获逻辑,触发报错后会抛出未处理Promise拒绝的警告。

修复方案

你可以选择任意一种路径处理方式,两种都可以正常运行:

方式1:直接写转义后的完整路径(简单快捷)

将page.goto的参数修改为带协议头、转义后的路径即可:

await page.goto('file://C:/Users/weske/Desktop/WebScraping/index.html');
// 也可以用转义反斜杠的写法:await page.goto('file://C:\\Users\\weske\\Desktop\\WebScraping\\index.html');

方式2:用path模块自动处理路径(兼容性更好,适配不同操作系统)

完整修改后的代码如下:

import playwright from "playwright";
import path from "path";
import { fileURLToPath } from "url";

// ES模块环境下获取当前脚本所在目录,CommonJS环境可直接使用__dirname
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

async function main() {
    const browser = await playwright.chromium.launch({
        headless: true
    });
    
    const page = await browser.newPage();
    // 自动拼接本地文件路径和协议头
    const localHtmlUrl = `file://${path.join(__dirname, 'index.html')}`;
    await page.goto(localHtmlUrl);
    const title = await page.title();
    console.log(title);
    await page.waitForTimeout(5000);
    await browser.close();
}

// 添加异常捕获逻辑,避免未处理的Promise报错
main().catch(err => console.error('运行错误:', err));

修改完成后运行代码即可正常输出本地HTML文件的标题。

内容的提问来源于stack exchange,提问作者Aliayub Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:45:03