Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP拍摄页面截图?_Php_Google Api_Screenshot - Fatal编程技术网

如何使用PHP拍摄页面截图?

如何使用PHP拍摄页面截图?,php,google-api,screenshot,Php,Google Api,Screenshot,我需要截图的网页。我可以使用谷歌API截图 比如,如果我输入了URL=mydomain.com/,那么它就工作了,但是如果我使用了URL=mydomain.com/new/index/6,那么我就得到了错误 警告:文件获取内容(www.googleapis.com/pagespeedonline/v2/runPagespeed?url=mydomain.com/new/index/6&screenshot=true):无法打开流:HTTP请求失败!HTTP/1.0 400中的错误请求 你能帮我解

我需要截图的网页。我可以使用谷歌API截图

比如,如果我输入了
URL=mydomain.com/
,那么它就工作了,但是如果我使用了
URL=mydomain.com/new/index/6,那么我就得到了错误

警告:文件获取内容(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."\" />";
 ?>

只需尝试在$siteURL中添加协议即可

大概是这样的:

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

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

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=example.com/test/test&screenshot=true
无效值“example.com/test/test”。值必须与以下正则表达式匹配:“(?i)http:/*”

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

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

检查公共区域之后的所有内容的权限。您可能还必须包含一个尾随斜杠
$siteURL=“mydomain.com/new/index/6/”尝试一下,并确保该文件夹中有索引文件。看起来你正在将你的URL连接到Google URL。尝试使用
urlencode($siteURL)
@Fred ii-我尝试了尾随斜杠,但效果相同issue@timclutton,我也试过,但我是issueGah,忍者!:)@dekameron,如果我像mydomain.com/new/index.php那样使用它,那么它就工作了,但是如果我使用mydomain.com/new/index.php/6,它就不工作了working@NarendraVerma所以,检查“mydomain.com/new/index.php/6”是否是一个有效的URL,状态码为200,没有重定向等。我在这个URL mydomain.com/new/index.php/6中有一个pdf文件。如果我直接访问此URL,则pdf是displaying@dekameron,我应该在哪里检查?
https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=http://example.com/test/test&screenshot=true