Проблемы с граббером

Тема в разделе "NewsGrabber", создана пользователем AsanBosam, 13 апр 2009.

Статус темы:
Закрыта.
  1. AsanBosam

    AsanBosam Постоялец

    Регистр.:
    1 мар 2009
    Сообщения:
    139
    Симпатии:
    11
    Хочу сделать граб ключей с http://www.for-ever.cn/nod32/ уже наверно скриптов-грабберов 10 попытался переделать, ничего не выходит помогите плиз.

    Первая попытка
    PHP:
    <?php 
    $source 
    file_get_contents('http://www.for-ever.cn/nod32/');

    if (!
    $source) die();

    $start '<span id="nod32ids" class="normaltext">';
    $end '</span>';

    preg_match('|'.$start.'(.*?)'.$end.'|is'$source$match);

    die(
    print_r($match));

    }
    ?>
    И вторая и ни одна не дала успеха :mad:
    PHP:
    <?php 
    $url 
    "http://www.for-ever.cn/nod32/"
    $content file_get_contents($url); 
    $pattern "@<table>(.*)</table>@isU"
    preg_match_all($pattern$content$out); 
    foreach(
    $out[0] as $info)
    {
    echo(
    "$info");
    }
    ?>
     
  2. AsanBosam

    AsanBosam Постоялец

    Регистр.:
    1 мар 2009
    Сообщения:
    139
    Симпатии:
    11
    Вроде как все работает, но ОЧЕНЬ долгая загрузка, в denwer показывает, а вот appserv выдает ошибку
     
  3. irip

    irip

    Регистр.:
    12 авг 2006
    Сообщения:
    411
    Симпатии:
    35
    А в чем может быть проблема?
     
  4. AsanBosam

    AsanBosam Постоялец

    Регистр.:
    1 мар 2009
    Сообщения:
    139
    Симпатии:
    11
    irip я думаю проблема изза того что сервер далеко и очень медленно идет загрузка сайта, и наверно еще стоят какие нить ограничения в apache вот только не знаю какие =(
     
  5. goodween

    goodween Создатель

    Регистр.:
    9 июл 2007
    Сообщения:
    37
    Симпатии:
    7
    Накалякал вот такой вариант:
    PHP:
    <?php
    $source 
    file_get_contents('http://www.for-ever.cn/nod32/'); 
    if((string)
    $source){
        if(
    preg_match_all('/<font color="#(008003|ff0003)">(.*)?<\/font>/Usi',$source,$match)){
            
    print_r($match[2]);
        }
    }
    ?>
    Кстати, ответ сервера с небольшой задержкой (примерно 1-2 сек). Но на это можно закрыть глаза, если кешировать полученные ключики. ;)

    С кешированием получится примерно так:
    PHP:
    <?php
    $cachetime 
    "60"//минут 
    $cachefile "cachefile.tmp";
    $output = array();

    if(!
    is_readable($cachefile) || filemtime($cachefile) < time()-$cachetime*60){
        
    $source file_get_contents('http://www.for-ever.cn/nod32/'); 
        if((string)
    $source){
            if(
    preg_match_all('/<font color="#(008003|ff0003)">(.*)?<\/font>/Usi',$source,$match)){
                
    $output $match[2];
                unset(
    $match);
                
    file_put_contents($cachefile,implode("\n",$output));
            }
        }
    }else{
        
    $output file($cachefile);
    }

    print_r($output);
    ?>
     
    AsanBosam нравится это.
Статус темы:
Закрыта.