php抓取一个页面的图片

程序源码
0 47
csroad
csroad 举报
04月07日 02:29

思路:

1.找到一个页面

2.正则过滤所有的img

3.正则过滤出所有的src的属性

4.获取链接信息,写入文件 file_get_contents(), file_put_contents()

5.在cli模式下运行代码(浏览器运行可能内存爆掉,或运行超时)

代码:


<?php
    //过滤所有的img
    $url = "http://www.csroad.cn/";
    $str = file_get_contents($url);
    $preg = '/<img[^>]*\/>/';
    preg_match_all($preg, $str, $matches);
    $matches = $matches[0];

    //获取src中的链接
    $arr = [];
    foreach($matches as $v){
        $preg = '/http:\/\/.*.jpg/';
        preg_match_all($preg, $v, $match);
        $arr[] = $match[0][0];
    }
    //文件保存地址
    $dir = 'E:/abs/img/';

    foreach($arr as $k => $v){
        //图片名称
        $name = $dir . $k . '.jpg';
        //下载
        download($name, $v);
    }
    function download($name, $url){
        if(!is_dir(dirname($name))){
            mkdir(dirname($name));
        }
        $str = file_get_contents($url);
        file_put_contents($name, $str);
        //输出一些东西,要不窗口一直黑着,感觉怪怪的
        echo strlen($str);
        echo "\n";
    }