2023-10-30 08:00:01

网站截图

有什么方法可以用PHP截图一个网站,然后保存到一个文件?


当前回答

最后编辑:7年过去了,这个答案仍然得到了点赞,但我猜这个答案现在更准确了。


当然可以,但是您需要用一些东西来呈现页面。 如果你真的只想使用php,我建议你使用HTMLTOPS,它会渲染页面并将其输出到ps文件(ghostscript)中,然后将其转换为.jpg, .png, .pdf…对于复杂的页面可能会稍微慢一些(并且不支持所有的CSS)。

否则,你可以使用wkhtmltopdf输出一个html页面在pdf, jpg,无论什么。 接受CSS2.0,使用webkit (safari的包装器)来呈现页面。所以应该没问题。 你必须安装在你的服务器上,以及..

现在,有了新的HTML5和JS特性,也可以使用JavaScript将页面渲染成画布对象。这里有一个很好的库可以做到这一点:Html2Canvas,这里是由同一作者实现的,以获得类似G+的反馈。 一旦将dom渲染到画布中,就可以通过ajax发送到服务器,并将其保存为jpg格式。

编辑:你可以使用imagemagick工具将pdf转换为png。我的wkhtmltopdf版本不支持图像。例如:convert html.pdf -append html.png。

编辑:这个小shell脚本提供了一个简单的/但在linux上使用php5-cli和上面提到的工具的使用示例。

编辑:我现在注意到,wkhtmltopdf团队正在进行另一个项目:wkhtmltoimage,这给你的jpg直接

其他回答

Cutycapt保存网页的大多数图像格式(jpg,png..)下载它从你的突触,它比wkhtmltopdf工作得更好

我发现这是最好和最简单的工具:ScreenShotMachine。这是一项付费服务,但你可以得到100张免费截图,你还可以花20美元再买2000张,所以这是一笔相当划算的交易。它有一个非常简单的用法,你只是使用一个URL,所以我写了这个小脚本来保存一个基于它的文件:

<?php
  $url = file_get_contents("http://api.screenshotmachine.com/?key={mykey}&url=https://stackoverflow.com&size=X");

  $file = fopen("snapshots/stack.jpg", "w+");
  fwrite($file, $url);
  fclose($file);
  die("saved file!");
?>

他们有一个非常好的文档,所以你一定要看看。

好吧,PhantomJS是一个可以很容易地放在服务器上并与php集成的浏览器。您可以在WDudes中找到代码。他们包括了更多的功能,如指定图像大小,缓存,下载为文件或显示在img src等。

<img src=”screenshot.php?url=google.com” />

URL参数

宽度和高度:截图.php?url=google.com&w=1000&h=800 裁剪: screenshot.php ? url = google.com&w = 1000 h = 800 &clipw = 800 &cliph = 600 关闭缓存并加载新截屏: screenshot.php ? url = google.com&cache = 0 下载图片:screenshot.php?url=google.com&download=true

你可以在这里看到教程:使用PHP不带API抓取一个网站的截图

最后编辑:7年过去了,这个答案仍然得到了点赞,但我猜这个答案现在更准确了。


当然可以,但是您需要用一些东西来呈现页面。 如果你真的只想使用php,我建议你使用HTMLTOPS,它会渲染页面并将其输出到ps文件(ghostscript)中,然后将其转换为.jpg, .png, .pdf…对于复杂的页面可能会稍微慢一些(并且不支持所有的CSS)。

否则,你可以使用wkhtmltopdf输出一个html页面在pdf, jpg,无论什么。 接受CSS2.0,使用webkit (safari的包装器)来呈现页面。所以应该没问题。 你必须安装在你的服务器上,以及..

现在,有了新的HTML5和JS特性,也可以使用JavaScript将页面渲染成画布对象。这里有一个很好的库可以做到这一点:Html2Canvas,这里是由同一作者实现的,以获得类似G+的反馈。 一旦将dom渲染到画布中,就可以通过ajax发送到服务器,并将其保存为jpg格式。

编辑:你可以使用imagemagick工具将pdf转换为png。我的wkhtmltopdf版本不支持图像。例如:convert html.pdf -append html.png。

编辑:这个小shell脚本提供了一个简单的/但在linux上使用php5-cli和上面提到的工具的使用示例。

编辑:我现在注意到,wkhtmltopdf团队正在进行另一个项目:wkhtmltoimage,这给你的jpg直接

我用的是bluga。该api允许你每月免费拍摄100张快照,但有时它会为单个页面使用超过1个积分。我刚刚升级了drupal模块,Bluga WebThumbs到drupal7,它允许你在模板或输入过滤器中打印缩略图。

使用这个api的主要优点是,它允许你指定浏览器尺寸,以防你使用自适应css,所以我使用它来获得移动和平板电脑布局以及常规布局的渲染。

有以下语言的api客户端:

PHP, Python, 红宝石, Java, net c#, Perl 和Bash (shell脚本看起来需要perl)