【问题标题】:Convert URL to screenshot (script)将 URL 转换为屏幕截图(脚本)
【发布时间】:2011-04-18 05:19:05
【问题描述】:

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

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

UPD:

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

【问题讨论】:

  • php 和 python 只是文本处理引擎,不是图像渲染引擎。好可惜

标签: php python django url screenshot


【解决方案1】:

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

【讨论】:

  • 我需要动态创建一个页面,在该页面的对面将放置具有相同 URL 的页面的屏幕截图。
  • 这些服务通常会返回相应 URL 的缩略图。您可以在后台请求这样的工作(或保存数据),您可以将其存储在数据库中(以便稍后重用)或仅显示它(我会选择第一个)。
  • 这可以自动完成吗(我有大约1000个站点(url))
  • 你是说批量吗?选择一项服务,必要时注册,并使用循环循环遍历所有 url,发出服务请求并存储生成的拇指。
  • 您可以随意运行脚本任意次数,无需支付任何费用。中间没有第三方将元数据与脚本聚合。该脚本在服务终止数年后仍然有效(就像 websnapr.com 的情况一样)。有很多理由在服务上使用脚本。这看起来是一个相当年轻但有用的工具:github.com/maaaaz/webscreenshot
【解决方案2】:

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 生成可靠的截图。

【讨论】:

  • 对 linux 使用相同但无法正常工作,您能否指定需要进行哪些更改才能使其在 Linux 服务器中工作。
  • @zulfi 它应该可以在 linux 上运行。什么不工作?试试 Pageres,很简单。
【解决方案3】:

使用 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.

*/
?>

【讨论】:

    【解决方案4】:

    您可以像我一样使用 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

    【讨论】:

      【解决方案5】:
      <img src='http://zenithwebtechnologies.com.au/thumbnail.php?url=www.subway.com.au'>
      

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

      【讨论】:

      • 网站不存在了。
      【解决方案6】:

      如果你是 Python 家庭,你可以使用 PyQt4。该库支持从 url 获取屏幕截图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-20
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        相关资源
        最近更新 更多