在我的浏览器中用类似ctrl+s的PhantomJS保存一个网站

Save a website with PhantomJS like ctrl+s in my browser

本文关键字:保存 网站 一个 PhantomJS 浏览器 我的 ctrl+s      更新时间:2023-09-26

我正在尝试保存一个网站,稍后我想在Nginx上使用它。

我可以成功地page.render创建网站的图像,它看起来很好,但我不需要这种方式的内容。

我试着写fs.write("index.html",page.content,'w')

它生成了一个几乎很好的带有图像的HTML文件,但它看起来真的很糟糕,我相信问题是,它依赖于javascript、css和其他文件。(它还提供了很多404文件)

如果我ctrl+s使用chrome的网站,并将所有文件上传到Nginx,它的工作方式正是我需要的。但我需要定期自动发生这种情况,所以我想使用PhantomJS(或者如果PhantomJS上不可能的话,可以使用替代方案)

顺便说一句,我尝试了wget -m URL,但它也不起作用。

这是适用于屏幕截图的PhantonJS脚本:

function capture(sizes, callback) {
  var page = require('webpage').create();
  page.viewportSize = {width: sizes[0], height: height};
  //page.zoomFactor = 1;
  page.open(address, function (status) {
    if (status !== 'success') {
      console.log('Unable to load the address!');
    } else {
      page.scrollPosition = {
        top: 100,
        left: 0
      };
      window.setTimeout(function () {
        console.log("Generating:" + sizes[0]);
        var filename = output + "_" + sizes[0];
        page.render(filename + '.jpeg', {format: 'jpeg', quality: qual});
        page.close();
        callback.apply();
      }, 5000);
    }
  });
}

PhantomJS并不是最好的工具,因为你无论如何都需要修复下载的css、js和html图像文件的路径(Chrome在保存页面时会这样做)。

我建议这个wget的用法:

wget -E -H -k -K -p -nd -o log.txt http://example.com/page/

这将下载目标页面及其资源文件,并将其保存到当前目录中,重写html,使其正确链接到这些文件。