• 广东清远垃圾收集点火灾致9人死亡 系烟花爆竹引起 2018-02-22
  • 党务问答:党组与党委有何区别? 2018-02-21
  • 杨浦区贯彻实施长护险 春节加班满足老人护理需求 2018-02-21
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-21
  • 冬奥观察:奥林匹克在“云”间 2018-02-20
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-20
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-20
  • 人民网驻阿尔及利亚记者报道集 2018-02-19
  • 党务问答:党组与党委有何区别? 2018-02-19
  • MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • php抓取网站图片的程序

    栏目: 编程语言 发布于: 2014-04-29 20:50:04

    此程序实现了网页源代码捕获,图片链接获取、分析、并将同样的图片链接合并功能,实现了图片抓取功能。利用php强大的网络内容处理函数将指定的网站上的所有图片抓取下来,保存在当前目录下,以下为代码:

    <?php
    /*完成网页内容捕获功能*/
    function get_img_url($site_name){
        $site_fd = fopen($site_name, "r");
        $site_content = "";
        while (!feof($site_fd)) {
            $site_content .= fread($site_fd, 1024);
        }
       /*利用正则表达式得到图片链接*/
        $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/';
        $ret = preg_match_all($reg_tag, $site_content, $match_result);
        fclose($site_fd);
        return $match_result[1];
    }
    
    /* 对图片链接进行修正 */
    function revise_site($site_list, $base_site){
        foreach($site_list as $site_item) {
            if (preg_match('/^http/', $site_item)) {
                $return_list[] = $site_item;
            }else{
                $return_list[] = $base_site."/".$site_item;
        }
        }
        return $return_list;
    }
    
    /*得到图片名字,并将其保存在指定位置*/
    function get_pic_file($pic_url_array, $pos){
        $reg_tag = '/.*\/(.*?)$/';
        $count = 0;
        foreach($pic_url_array as $pic_item){
            $ret = preg_match_all($reg_tag,$pic_item,$t_pic_name);
            $pic_name = $pos.$t_pic_name[1][0];
            $pic_url = $pic_item;
        print("Downloading ".$pic_url." ");
            $img_read_fd = fopen($pic_url,"r");
            $img_write_fd = fopen($pic_name,"w");
            $img_content = "";
            while(!feof($img_read_fd)){
                $img_content .= fread($img_read_fd,1024);
              
            }
            fwrite($img_write_fd,$img_content);
            fclose($img_read_fd);
            fclose($img_write_fd);
            print("[OK] ");
        }
        return 0;
    }
    
    function main(){
    /* 待抓取图片的网页地址 */
        $site_name = "http://www.rocksun.cn";
        $img_url = get_img_url($site_name);
        $img_url_revised = revise_site($img_url, $site_name);
        $img_url_unique = array_unique($img_url_revised); //unique array
        get_pic_file($img_url_unique,"./"); 
    }
    
    main();
    ?>

    此程序还有待完善的地方是,如果图片在网站服务器上不同目录下但文件名是相同的,此时图片有可能是不一样的,但在最后保存时,后面得到的图片会将前面已经保存的图片覆盖掉,如在http://www.rocksun.cn/网站上有图片链接http://www.rocksun.cn/pic/test1.jpghttp://www.rocksun.cn/pic/new/test1.jpg那么在下载时这两张图片只有一张保存,另一张就被覆盖掉,修正的方法是在每次保存前先检索当前目录下是否已有此文件名,有的话对将要保存的图片重新命名即可。 

    您可能感兴趣的文章

    • 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
    • php异步调试和线上调试网站程序的方法
    • php获取目录所有文件并将结果保存到数组的程序
    • php获取内容中的所有图片列表并输出的方法
    • php生成柱状图(统计图)程序
    • PHP如何给网站开启压缩输出增强网站访问速度
    • js判断图片是否加载完成并获取图片的宽度
    • PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:php抓取网站图片的程序
    IT技术书籍推荐:
    疯狂Android讲义(第3版)
    疯狂Android讲义(第3版)
    李刚 (作者)
    移动互联网已经成为当今世界发展最快、市场潜力最大、前景最诱人的业务,而Android则是移动互联网上市场占有率最高的平台。 本书是《疯狂Android讲义》的第3版,本书基于最新的Android 5,并采用了Google推荐的IDE:Android Studio作为开发工具,书中每个案例、每个截图都全面升级到Android 5。本书全面介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、整合第三方Map服务等。