دیجی اسکریپت

عکس گرفتن از صفحات وب با استفاده از PHP | دیجی اسکریپت

عکس گرفتن از صفحات وب با استفاده از PHP
[ad_1]

در اینجا میخوام به شما دوستان عزیز آموزش بدم که چجوری به صورت رایگان (بعله رایگان 😀 ) و با استفاده PHP از صفحات وب عکس بگیرید.

راه های مختلف و API ها و سایتهای زیادی هستند که امکان عکس گرفتن از صفحات وب رو به شما میدن اما تقریبا همه ی اونا پولی هستن و شما مجبور هستید یه مبلغی بهشون پرداخت کنید! شما با استفاده از Google میتونید به صورت رایگان از صفحه ی وب مورد نظرتون عکس بگیرید. در اینجا ما از قابلیت google page speed insights استفاده میکنیم تا از وب سایت مورد نظرمون عکس بگیریم. این روش رو میتونید هم با PHP و هم با ASP یا هر زبان برنامه نویسی دیگه ای استفاده کنید اما من در اینجا روش استفاه از اون با PHP رو آموزش میدم.

برای عکس گرفتن از صفحات وب با استفاده از google page speed insights نیاز به ارسال ۲ پارامتر داریم!

  • پارامتر url : این پارامتر آدرس وب سایت مورد نظر شما را مشخص میکند
  • پارامتر screenshot : برای گرفتن تصویر وب سایت مورد نظر این پارامتر باید برابر با true باشد.

خب بریم سر اصل مطلب و ببینیم نحوه ی کار چجوری هست. به کدهای زیر دقت کنید :

<?php
    function getData($siteURL){
        $url="https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=".$siteURL."&screenshot=true";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
    //website url
    $siteURL = "http://www.tarhche.com/";
    //call Google PageSpeed Insights API
    $googlePagespeedData = getData($siteURL);
    //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."" />";

مثال بالا نحوه ی استفاده از Google PageSpeed Insights برای گرفتن اسکرین شات از وب سایت مورد نظر ما رو نشون میده. در اینجا من ادرس وب سایت خودم رو درون متغیر siteURL قرار دادم سپس با استفاده از تابع getData به وسیله ی cURL یک درخواست به گوگل ارسال کردم. نتیجه ی دریافتی به صورت json خواهد بود که با استفاده از json_decode میتونید اون رو از حالت JSON به حالتی که برای PHP قابل استفاده باشد تبدیل کنید. سپس علامت های – , _ رو با + و / جایگزین میکنیم , تصویر دریافتی به صورت base64 خواهد بود و در اخر اون رو نمایش میدیم. به همین راحتی 😀

اگه میخواید این اسکریپت رو روی لوکال هاست (localhost) تست کنید باید بدونید که گوگل ایران رو تحریم کرده و ممکنه روی لوکال هاست شما کار نکنه چون IP ایران دارین! میتونید با نرم افزارهای دور زدن تحریم IP خودتون رو تغییر بدید به یه کشور دیگه و روی لوکال هاست تست بگیرید. اما روی سرور مشکلی وجود نداره مگر اینکه سرور شما داخل ایران باشه.

شما میتونید یه فرم طراحی کنید که URL یا ادرس سایت رو بگیره و عکسش رو نمایش بده 😀 نحوه ی انجام این کار به صورت زیر است :

<!doctype html>
<html>
    <head>
        <title>get websites screenShot using php</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" >
            <p>Website URL: <input type="text" name="url" placeholder="http://yoursite.com" /></p>
            <input type="submit" name="submit" value="CAPTURE">
        </form>
    </body>
</html>
<?php
function getData($siteURL){
    $url="https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=".$siteURL."&screenshot=true";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
if(!empty($_POST['url'])){
    //website url
    $siteURL = $_POST['url'];
    if(filter_var($siteURL, FILTER_VALIDATE_URL)){
        //call Google PageSpeed Insights API
        $googlePagespeedData =getData($siteURL);
        //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."" />";
    }else{
        echo "Please enter a valid URL.";
    }
}
?>

در دستورات بالا یک فرم ایجاد کردیم که ادرس وب سایت رو از کاربر میگیره و تصویرش رو نمایش میده 😀

دوستان عزیز میتونید کدهای این آموزش رو از انتهای همین پست دانلود و استفاده کنید. همچنین کسانی که سوال یا مشکلی دارند میتونن از انتهای همین پست مطرح کنند تا پاسخ بگیرن.

موفق و پیروز باشید.

 

[ad_2]

لینک منبع مطلب

ارسال دیدگاه جدید

به نکات زیر توجه کنید

  • نظرات شما پس از بررسی و تایید نمایش داده می شود.
  • لطفا نظرات خود را فقط در مورد مطلب بالا ارسال کنید.