我已将单个网页保存到本地磁盘(纯HMTL文件,没有更改)。
尝试使用 Puppeteer 创建 PDF 时,缺少具有相对路径的图像。此外,PDF 中的所有相对
href
链接都引用了不存在的本地地址,而不是指向网页上的正确地址(即 http://www.example.com/
加相对 URL)。
是否可以在 Puppeteer 中定义一个前缀,添加到所有相对 URL(图像、链接、CSS、JS 等)中,以便将
http://www.example.com/
添加到 HTML 文件中以 /
开头的所有相对 URL 中?
base
元素来做到这一点。来自文档:
HTML
元素 指定用于文档中包含的所有相对 URL 的基本 URL。文档中只能有一个<base>
元素。<base>
请注意,必须在具有 URL 属性的其他元素之前指定它。这意味着不可能执行某些 JavaScript 来更改已渲染页面的行为。相反,您应该在渲染之前更改 HTML。
在渲染之前将基本元素添加到 HTML 代码中,使其看起来像这样:
<!DOCTYPE html>
<html>
<head>
<base href="http://www.example.com/">
...
虽然接受的答案是正确的,但它并没有准确显示如何使用 Puppeteer 自动注入
base
标签。我遇到了同样的问题,以下是如何在 Puppeteer 中动态添加 base
标签:
await page.evaluate(() => {
const base = document.createElement('base');
base.href = window.location.origin;
// Insert the base element as the first child of the head element
document.head.insertBefore(base, document.head.firstChild);
});