我需要截取页面的截图。我可以使用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."\" />";
?>
答案 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