Парсер под http://getdota.com/ хелп.

Discussion in 'PHP' started by Хелпер, 6 Jan 2009.

  1. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    Наверное, есть тут дотеры, и знают о сайте http://getdota.com/ - официальный сайт. Так вот. Вверху есть строчка вида: Latest Map: "версия" (сейчас 6.57б)
    ТАк вот, и в помощь игрокам решил написать парсер на PHP дабы тот любое изменение этой строки замечал и отправлял инфу на мыло, или несколько мыл.
    Не знаю даже с чего начать, т.к. я новичок. Но решил, что будет полезно поупражняться.
     
  2. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    была недавно похожая тема....
     
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    PHP:
    <?
    $dota file_get_contents('http://getdota.com/');
    preg_match_all('|"version">(.+)</span>|',$dota$verPREG_PATTERN_ORDER);
    $msg 'Latest '.$ver[1][0].' | Stable '.$ver[1][1];
    mail('[email protected]''Dota version'$msg);
    ?>
     
    _________________________
    1 person likes this.
  4. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    Чето я не вкурил как это работает.
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://php.su/learnphp/
     
    _________________________
  6. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    Вы похоже не поняли. Скрипт не должен требовать захода на него каждый раз. Он сам должен проверять. Т.е. к примеру каждые 30 мин.
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    cron в помощь или добавь
    ignore_user_abort();
    set_time_limit(0);

    и в цикл бесконечный с слипом
     
    _________________________
  8. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    пишет такую ошибку:
    Warning: file_get_contents(http://getdota.com/) [function.file-get-contents]: failed to open stream: Connection refused in /home/www/dotaup.100webspace.net/dota.php on line 2
     
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Работай тогда через сокеты или курлы. file_get_contents далеко не всегда работает с сайтами
     
  10. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    знал бы я что это значит
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Хелпер
    PHP:
    <?

        @
    set_time_limit(0);
        @
    ini_set("max_execution_time"0);
        function 
    get($url)
        {
            
    $ch curl_init();  
            
    curl_setopt($chCURLOPT_URL,$url);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
            
    $ss=curl_exec($ch);
            
    curl_close($ch);
            return 
    $ss;
        }
        
        
    $a=get('http://getdota.com/');
        if (
    preg_match_all('|>([^<>]+)<span class="version">([^<>]+)</span>|i',$a,$result,PREG_SET_ORDER))
        {
            
    $f=fopen('dota.txt','w');
            
    fwrite($f,$result[0][1].$result[0][2]."\r\n".$result[1][1].$result[1][2]);
            
    fclose($f);
        }
        
    ?>
    Ставить на крон, а на страницах - инклудить файл dota.txt
     
    _________________________
  12. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    гм. я как бы на мыло просил а не в файл, но спасибо
     
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    борзеешь, сынок. Тебе инфу выцепили, не хочешь писать в файл (что, кстати, неплохо, в случае неудачной отсылки на мыло - ака логирование), сразу отсылай на мыло:

    PHP:
    $to "кому"
    $ot "от кого"
    $subj "Сабж"
    $mess =  $result[0][0];
      
    mail($to$subj$mess"From: ".$ot); 
     
    1 person likes this.
  14. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    СПС всем