【问题标题】:Save urls screenshots with php用php保存url截图
【发布时间】:2019-11-23 13:48:38
【问题描述】:

我每天都有一些网址,需要从这些网址中截取屏幕截图。 我想在我的主机中保存特定的 url 屏幕截图。 现在我想在 localhost/wamp 和 linux host 中尝试一下。

我尝试了一些库但没有成功。 我想试试 google api pagespeed v5 。

<?php
$url = 'mysite.com';
$response =     file_get_contents("https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=$url&screenshot=true");
$googlePagespeedObject = json_decode($response, true);
$screenshot = $googlePagespeedObject['screenshot']['data'];
$screenshot = str_replace(array('_','-'), array('/','+'), $screenshot);
echo "<img src=\"data:image/jpeg;base64,{$screenshot}\"     alt=\"Screenshot\" />";
file_put_contents('...', base64_decode($screenshot));

我的错误没有任何成功的图像:

警告: 文件获取内容(https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=mysite.com&screenshot=true): 无法打开流:HTTP 请求失败! HTTP/1.0 403 禁止进入

【问题讨论】:

  • Website screenshots的可能重复
  • 该方法不起作用,所以我发布了:-)
  • developers.google.com/speed/docs/insights/v5/get-started "如果您只是试用 PageSpeed Insights API,则不需要 API 密钥。如果您计划以自动化方式使用 API 并每秒进行多次查询,您需要一个 API 密钥。”
  • 您的连接或公司代理有问题,尝试将您的文件上传到主机或服务器,它会工作。并且不要忘记将 http 或 https 添加到您的 $url = 'mysite.com';

标签: php html css google-api screenshot


【解决方案1】:

我修改了你的代码,试试这个代码。工作example,保存图片here

function ScreenShotUrl($url){
  $link = $url ;
  $name = parse_url($link)['host'];
  $resp = file_get_contents("https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=$link&screenshot=true");
  $resp = json_decode($resp, true);
  $data = str_replace('_','/',$resp['lighthouseResult']['audits']['final-screenshot']['details']['data']);
  $data = str_replace('-','+',$data);
  echo '<img src="' . $data . '" />';
  $img = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)); 
  file_put_contents('tmp/'.$name.'.jpg', $img);
} 
$url = 'http://bajukakilima.com'; 
ScreenShotUrl($url);

【讨论】:

    【解决方案2】:

    这里有一个用于 php 截图的函数:

    function ScreenShotUrl($url){
    $link = $url ;
    $name = parse_url($link)['host'];
    $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('images/screenshots/'.$name.'.jpg',$decoded);
    $file_name = "$name.jpg";
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2011-09-22
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多