【问题标题】:Command line program to create website screenshots (on Linux) [closed]用于创建网站截图的命令行程序(在 Linux 上)[关闭]
【发布时间】:2010-09-12 15:52:38
【问题描述】:

在 Linux 上创建网站截图的好命令行工具是什么?我需要在没有人工交互的情况下自动生成网站截图。我发现的唯一工具是khtml2png,但我想知道是否还有其他不基于 khtml 的工具(即具有良好的 JavaScript 支持,...)。

【问题讨论】:

标签: linux screenshot


【解决方案1】:

我知道它不是命令行工具,但您可以轻松编写脚本以使用 http://browsershots.org/ 对于未托管在外部 IP 上的应用程序而言,这不是很有用。

仍然是一个很棒的工具。

【讨论】:

  • 其实我觉得我可以直接使用这个项目的代码来编写我自己的本地版本,而不是通过 browsershots.org 提交东西(因为它是给公司的)。
【解决方案2】:

我不知道任何定制的东西,我敢肯定壁虎引擎可以做一些事情来渲染到 png 文件而不是屏幕......

或者,您可以在专用 VNC 服务器实例中以全屏模式启动 Firefox,然后使用屏幕截图抓取器截取屏幕截图。全屏 = 最小的 chrome,VNC 服务器实例 = 没有可见的 UI + 你可以选择你的分辨率。

使用 xinit 和 Xvnc 作为 X 服务器来执行此操作 - 您需要阅读所有手册页。

缺点是截图总是一样的大小,不会根据网页调整大小...

【讨论】:

    【解决方案3】:

    import 命令,但您需要 X 和一个打开浏览器窗口的小 bash 脚本,然后截取屏幕截图并关闭浏览器。

    您可以找到更多信息here,或者在 shell 中输入 import --help ;)

    【讨论】:

      【解决方案4】:

      更多细节可能有用...

      在 X 会话中启动 firefox(或其他浏览器),无论是在您的控制台上还是使用 vncserver。您可以使用--height--width 选项将窗口大小设置为全屏。另一个 firefox 命令可用于设置在第一个 firefox 窗口中显示的 URL。现在您可以使用几个命令之一来抓取屏幕图像,例如 Imagemagick 包中的“import”命令,或者使用 gimp、fbgrab 或 xv。

      #!/bin/sh
      
      # start a server with a specific DISPLAY
      vncserver :11 -geometry 1024x768
      
      # start firefox in this vnc session
      firefox --display :11
      
      # read URLs from a data file in a loop
      count=1
      while read url
      do
          # send URL to the firefox session
          firefox --display :11 $url
      
          # take a picture after waiting a bit for the load to finish
          sleep 5
          import -window root image$count.jpg
      
          count=`expr $count + 1`
      done < url_list.txt
      
      # clean up when done
      vncserver -kill :11
      

      【讨论】:

      • 这很好用,除了 Firefox,-display :11 必须是 --display=:11 但是你给了我一个很好的起点!谢谢!
      • 非常好。不过需要更多信息。与 --display 选项一样。你怎么知道的?执行此操作的文档在哪里。原因是,我需要程序全屏打开。当我得到一个屏幕截图时,Firefox 不是全屏的,而是在一个可调整大小的小窗口中。
      • 这应该被重定向到:No-GUI tool to take screenshots of websites
      【解决方案5】:

      scrot 是一个用于截屏的命令行工具。请参阅man page 和此tutorial

      您可能还想查看为浏览器编写脚本。有一些 Firefox 附加组件可以截取屏幕截图,例如 screengrab(如果需要,它可以捕获整个页面,而不仅仅是可见部分),然后您可以使用 greasemonkey 编写浏览器脚本来截取屏幕截图。

      【讨论】:

      【解决方案6】:

      http://khtml2png.sourceforge.net/

      deb文件

      在安装 libkonq4 后在我的 Ubuntu 上工作...但您可能必须涵盖其他依赖项。

      我认为现在对 javascript 的支持可能会更好!

      斯蒂芬

      【讨论】:

        【解决方案7】:

        不适用于命令行,但至少可以在批处理操作中使用大量 url,您可以使用 firefox 及其插件 fireshot(许可版本?)。

        1. 为您的集中的所有网址打开标签(例如“打开此文件夹中所有书签的标签...”)。
        2. 然后在 fireshot 启动“捕获所有选项卡”
        3. 然后在编辑窗口中调用“选择所有镜头 -> 保存所有镜头”

        在以一组漂亮的截图文件结束之前设置截图属性(大小、文件格式等)。

        史蒂芬

        【讨论】:

          【解决方案8】:

          试试漂亮的小工具CutyCapt,它只依赖于Qt和QtWebkit。 ;)

          【讨论】:

          • 比公认的答案好得多。
          • CutyCapt 是一个很棒的工具,但我使用了@font-face 字体,但它们没有正确显示。
          • 不幸的是它没有将下载结果报告为退出代码。
          • CutyCapt 有时会产生“段错误”,我不能在生产环境中依赖它!
          • apt-get install cutycapt
          【解决方案9】:

          Webkit2png

          我认为这是我过去使用的。

          编辑我发现我没有使用上述内容,但找到了this page,其中包含许多不同程序和技术的评论。

          【讨论】:

            【解决方案10】:

            看看PhantomJS,它似乎是一个可在 Linux、OSX 和 Windows 上运行的免费脚本 Webkit 引擎。因为我们目前使用Browshot(商业解决方案),所以我没有使用它,但是当我们所有的积分用完时,我们将认真地掠夺它(因为它是免费的并且可以在我们的服务器上运行)

            【讨论】:

            • 我刚刚在我的 hostmonster 帐户上尝试了这个(phantomjs),一个“如果它在这里工作,它可以在任何地方工作”的环境。 1. 下载 tarball 2. 解压 tarball 3. 转到 bin 目录 4. 从他们的快速启动页面剪切并粘贴 hello world 示例。 5.运行地狱世界
            • (续上一篇文章) 6. 等待几分钟(我以为它被锁定了,但第一次只花了一段时间)。 6 剪切并跳过下面的示例 helloWorld.js 7. 将 example.com 更改为您想要屏幕截图的站点。 8. 运行示例 我花了 5 分钟完成此操作比让 webkit2png 工作的痛苦要少得多,thanx MaxiWheat 对不起 2 个单独的帖子,编辑计时器用完了
            猜你喜欢
            • 1970-01-01
            • 2018-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-27
            • 2013-10-20
            相关资源
            最近更新 更多