PHP简单图片采集

第一步先生成一个要采集的TEST文本文件

<?php
 
header('Content-type: text/html;charset=UTF-8');
/**
 * 生成要采集的图片URL地址
 */
$url = "http://outsiderla.me/nikita-creative-staff.html";
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. 执行并获取HTML文档内
$con = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
//正则匹配图片
preg_match_all("/<img.*?src=\"(.*?)\".*?\/>/i", $con, $arr);
foreach ($arr[1] as $k => $v) {
//    $file = fopen("img.txt", 'w');
//    fwrite($file, $v);
//    fclose($file);
    file_put_contents('img.txt',"$v \r\n", FILE_APPEND);
}

下载生成上步中生成URL图片链接地址:

<?php
header('Content-type: text/html;charset=UTF-8');
set_time_limit(0);
 
/**
 * 写文件
 * @param    string  $file   文件路径
 * @param    string  $str    写入内容
 * @param    char    $mode   写入模式
 */
function wfile($file, $str, $mode='w') {
    $oldmask = @umask(0);
    $fp = @fopen($file, $mode);
    @flock($fp, 3);
    if (!$fp) {
        Return false;
    } else {
        @fwrite($fp, $str);
        @fclose($fp);
        @umask($oldmask);
        Return true;
    }
}
 
function savetofile($path_get, $path_save) {
    @$hdl_read = fopen($path_get, 'rb');
    if ($hdl_read == false) {
        echo("<span style='color:red'>$path_get can not get</span>");
        Return;
    }
    if ($hdl_read) {
        @$hdl_write = fopen($path_save, 'wb');
        if ($hdl_write) {
            while (!feof($hdl_read)) {
                fwrite($hdl_write, fread($hdl_read, 8192));
            }
            fclose($hdl_write);
            fclose($hdl_read);
            return 1;
        }
        else
            return 0;
    }
    else
        return -1;
}
 
function getExt($path) {
    $path = pathinfo($path);
    return strtolower($path['extension']);
}
 
/**
 * 按指定路径生成目录
 *
 * @param    string     $path    路径
 */
function mkDirs($path) {
    $adir = explode('/', $path);
    $dirlist = '';
    $rootdir = array_shift($adir);
    if (($rootdir != '.' || $rootdir != '..') && !file_exists($rootdir)) {
        @mkdir($rootdir);
    }
    foreach ($adir as $key => $val) {
        if ($val != '.' && $val != '..') {
            $dirlist .= "/" . $val;
            $dirpath = $rootdir . $dirlist;
            if (!file_exists($dirpath)) {
                @mkdir($dirpath);
                @chmod($dirpath, 0777);
            }
        }
    }
}
 
/**
 * 从文本中取得一维数组
 *
 * @param    string     $file_path    文本路径
 */
function getFileListData($file_path) {
    $arr = @file($file_path);
    $data = array();
    if (is_array($arr) && !empty($arr)) {
        foreach ($arr as $val) {
            $item = trim($val);
            if (!empty($item)) {
                $data[] = $item;
            }
        }
    }
    Return $data;
}
 
//采集开始
//传入自己的需要采集的图片url列表文本文件 每个图片url写一行
$url_file = isset($_GET['file']) && !empty($_GET['file']) ? $_GET['file'] : null;
$txt_url = "txt/" . $url_file;
 
$urls = array_unique(getFileListData($txt_url));
if (empty($urls)) {
    echo('<div style="color:red">无链接地址</div>');
    die();
}
$save_url = "images/" . date("y_m_d", time()) . "/";
mkDirs($save_url);  //按日期建立文件夹
$i = 1;
if (is_array($urls) && count($urls)) {
    foreach ($urls as $val) {
        savetofile($val, $save_url . date("His", time()) . "_" . $i . "." . getExt($val));
        echo($i . "." . getExt($val) . " got\n");
        $i++;
    }
}
echo('<div style="color:green">finish</div>');
?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注