使用 php 保存网址截图
Save urls screenshots with php
我每天都有一些网址,需要从这些网址中截取屏幕截图。
我想在我的主机中保存特定的 url screenShot。
现在我想在 localhost/wamp 和 linux 主机中尝试。
我尝试了一些库但没有成功。
我想尝试 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));
我的错误,没有任何成功的图像:
Warning:
file_get_contents(https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=mysite.com&screenshot=true):
failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in
这里是用于 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";
}
我稍微修改了你的代码,试试这个代码。工作 example, saved image 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);
我每天都有一些网址,需要从这些网址中截取屏幕截图。 我想在我的主机中保存特定的 url screenShot。 现在我想在 localhost/wamp 和 linux 主机中尝试。
我尝试了一些库但没有成功。 我想尝试 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));
我的错误,没有任何成功的图像:
Warning: file_get_contents(https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=mysite.com&screenshot=true): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in
这里是用于 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";
}
我稍微修改了你的代码,试试这个代码。工作 example, saved image 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);