如何使用PHP获取页面的屏幕截图?

时间:2017-11-06 12:42:36

标签: php google-api screenshot

我需要截取页面的截图。我可以使用Google API获取页面的屏幕截图。

如果我输入URL=mydomain.com/然后它正在运行,但如果我使用了URL=mydomain.com/new/index/6那么我就会收到错误

  

警告:file_get_contents(www.googleapis.com/pagespeedonline/v2/runPagespeed?url=mydomain.com/new/index/6&screenshot=true):无法打开流:HTTP请求失败!

中的HTTP / 1.0 400错误请求

你能帮助我吗?

<?php 
//website url
$siteURL = "mydomain.com/new/index/6";
//call Google PageSpeed Insights API
$googlePagespeedData = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$siteURL&screenshot=true");
//decode json data
$googlePagespeedData = json_decode($googlePagespeedData, true);

//screenshot data
$screenshot = $googlePagespeedData['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot); 

//display screenshot image
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";
 ?>

2 个答案:

答案 0 :(得分:3)

"message": "Invalid value 'mydomain.com/new/index/6'. Values must match the following regular expression: '(?i)http(s)?://.*'",

尝试在 $ siteURL

中添加协议

这样的事情:

$siteURL = "https://stackoverflow.com/questions/47137304/how-to-take-the-screenshot-of-the-page-using-php";

答案 1 :(得分:1)

在浏览器中尝试以下网址会显示错误消息:

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=example.com/test/test&screenshot=true
  

值'example.com/test/test'无效。值必须与以下正则表达式匹配:'(?i)http(s)?://。*'

更改URL以包含协议可修复问题:

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=http://example.com/test/test&screenshot=true