将URL转换为屏幕截图(脚本)

时间:2010-09-28 10:08:40

标签: php python django url screenshot

互联网上有网页的网址。我需要获取此页面的屏幕截图(无论在哪个浏览器中)。

我需要一个脚本(PHP,Python(甚至Django框架)),它在出口处接收URL(字符串)和输出屏幕截图文件(文件gif,png,jpg)。

UPD:

我需要动态创建一个与URL相对的页面,该页面将放置具有相同URL的页面截图。

7 个答案:

答案 0 :(得分:7)

为什么在可以使用其他网站的服务时需要脚本? 检查我正在使用的是什么:WebSnapr http://www.websnapr.com/
或者,如果其他内容符合您的要求,请检查http://www.google.ro/search?ie=UTF-8&q=website+thumbnail

答案 1 :(得分:1)

PhantomJS是从URL生成屏幕截图的更好选择。 以下脚本演示了页面捕获的最简单用法。它加载Github主页,然后将其保存为图像github.png。 代码

var page = require('webpage').create();
page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});

要运行此示例,请创建一个名为github.js的新文件。将上面的代码复制并粘贴到github.js文件中。在命令行中,使用PhantomJS运行这个新创建的脚本:

phantomjs github.js

有很多projects用于使用PhantomJS生成屏幕截图。 Pageres生成可靠的屏幕截图,基于NodeJS和PhantomJS。

答案 2 :(得分:1)

使用Google Page Speed的解决方案 - 经测试&工作

//SOLUTION 1

<?php
$link = "http://example.com";
$googlePagespeedData = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$link&screenshot=true");
$googlePagespeedData = json_decode($googlePagespeedData, true);
$screenshot = $googlePagespeedData['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot); 
$show_link = "<a href='$link'><img src=\"data:image/jpeg;base64,".$screenshot."\" /></a>";
echo $show_link;

//SOLUTION 2

$name = 'test';
$googlePagespeedData = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$link&screenshot=true");
$googlePagespeedData = json_decode($googlePagespeedData, true);
$screenshot = base64_decode($googlePagespeedData['screenshot']['data']);
$data = str_replace('_','/',$googlePagespeedData['screenshot']['data']);
$data = str_replace('-','+',$data);
$decoded = base64_decode($data);
file_put_contents('myfolder/'.$name.'.jpg',$decoded);
$file_name = "$name.jpg";

/*
-- IMPORTANT INFORMATION -- READ BELOW --

Choose how to proceed!
1. Use the above to display screenshots of links = longer processing time for multiple links.
2. Save image to a file, reference the saved image = more disk space needed if multiple links.

Note the trade off between processing time and disk space, if you're on a shared hosting platform with a small disk space limit and envisage or already have a lot of users (forums beware) you may want to consider a bigger hosting plan or even a dedicated server.

*/
?>

答案 3 :(得分:0)

您可以像我一样使用shotbox API

这是法语,但仍然很快:

  • 使用http://add.shotbot.net/k= key / url ,其中 key 是您的API密钥, url .. 。你想要的截图页面
  • 使用http://static.shotbot.net/md5url/format.jpg或http://cache.shotbot.net/s= format / url 其中格式可以 80 (80x60), 92 (92x69), 120 (ascreen 120x90), 160 (160x120), 240 (240x180), 320 (320x240), 1024 (1024x768)

获取API密钥:http://translate.google.fr/translate?hl=fr&sl=fr&tl=en&u=http%3A%2F%2Fwww.shotbot.net%2Fcreer-un-compte-webmaster.php

答案 4 :(得分:0)

<img src='http://zenithwebtechnologies.com.au/thumbnail.php?url=www.subway.com.au'>

将网址作为参数传递,您将获得更多详细信息的图片,请查看此链接http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html

答案 5 :(得分:0)

如果您是Python的家人,可以使用PyQt4。该库支持从URL获取屏幕截图。

答案 6 :(得分:-1)

还有http://webshot.mine.sk/免费,没有限制,多个API(js,jquery,php)