首页 > php代码 > PHP定时任务通过CURL图片的抓取例子

PHP定时任务通过CURL图片的抓取例子

下文为各位介绍一个PHP定时任务通过CURL图片的抓取例子,希望例子对大家帮助。

基本思路就是通过一个URL连接,将所有图片的地址抓取下来,然后循环打开图片,利用文件操作函数下载下来,保存到本地,并且

把图片的alt属性也抓取下来,最后将数据保存到自己数据库。

废话不多说,看程序就能明白了,其中,需要用到PHP定时任务和PHP的一个第三方插件simple_html_dom.php,的使用,参考simple_html_dom的下载和使用

代码:

<?php
function getLink($url) {
    include_once ('simple_html_dom.php');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    $html = new simple_html_dom();
    $html->load($output);
    $links = array();
    $arr = array();
    $title = array();
    foreach ($html->find('a') as $element) {
        if (preg_match('#^/content_[0-9]+_1.html$#i', $element->href)) {
            array_push($links, 'http://www.phprm.com' . $element->href);
            array_push($title, $element->title);
        }
    }
    $links = array_values(array_unique($links));
    $title = array_values(array_unique($title));
    $arr['links'] = $links;
    $arr['title'] = $title;
    return $arr;
}
function loadimg($url, $dirname) {
    include_once ('simple_html_dom.php');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    $html = new simple_html_dom();
    $html->load($output);
    $arr = array();
    foreach ($html->find('img[w]') as $element) {
        $image = $element->src;
    }
    $data = file_get_contents($image);
    $info = getimagesize($image); //获取图片信息,大小,格式
    switch ($info[2]) {
        case 1:
            $str = 'gif';
            break;
        case 2:
            $str = 'jpg';
            break;
        case 3:
            $str = 'png';
            break;
        default:
            continue;
            break;
    }
    if ($info[1] < 10 || $info[0] < 10) continue; //图片太小,不是有价值的图片,跳过本次循环
    $filename = time() . rand(1, 999999) . '.' . $str;
    if (!is_dir($dirname)) {
        mkdir($dirname, 0777, true);
    }
    $fp = fopen($dirname . $filename, 'w');
    fwrite($fp, $data);
    fclose($fp);
    return $dirname . $filename;
}
do {
    set_time_limit(0);
    ignore_user_abort();
    $img = getLink('http://www.phprm.com /qutu_1.html');
    $count = count($img['links']);
    $arr = array();
    for ($i = 0; $i < $count; $i++) {
        $arr[] = loadimg($img['links'][$i], 'images/');
    }
    $img['url'] = $arr;
    echo '<br/>';
    $img['title'];
    $res = array();
    $len = count($img['title']);
    //重新将数据组装成我们常用的二维数组,方便数据的数据库处理
    for ($i = 0; $i < $len; $i++) {
        $res[$i]['title'] = $img['title'][$i];
        $res[$i]['url'] = $img['url'][$i];
    }
    foreach ($res as $item) {
        echo '<img src=' . $item["url"] . '>' . $item["title"] . '<br />';
    }
    $interval = 24 * 3600;
    sleep($interval);
} while (true);


本文链接:http://www.phprm.com/code/82398.html

收藏随意^^请保留教程地址.

标签:foreach include preg_match fopen curl_setopt

相关文章

发表留言