Парсинг для начинающего

Тема в разделе "PHP", создана пользователем yeaahhh, 27 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья. Хотелось бы обучиться рисованию парсеров. Имеются ли у кого-нибудь ссылки на какие-либо достойные материалы по данной теме? Заранее спасибо!
     
  2. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    http://seovirus.ru/parsing-legko-i-dostupno-master-klass-ot-seovirusa.html
     
    yeaahhh нравится это.
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Благодарю.. А есть пример реализации парсера в режиме онлайн?
    Хотелось бы сделать парсинг футбольных результатов в режиме реального времени..
    Или это очень сложно организовать?
     
  4. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Просто запустить скрипт парсера на крон через какое-то время.
    Давайте сайт, который парсить - будет пример.
     
    yeaahhh нравится это.
  5. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    _livetv.ru_
    Синий блок с онлайн результатами.. :ah:
    Буду очень благодарен..
     
  6. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    http://livetv.ru/livescore/
    Отсюда подойдёт?
     
    yeaahhh нравится это.
  7. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Пойдёт :) А я тогда попробую вывести потом с внутренней страницы на главную в более меньшем объёме..
     
  8. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Всё-таки из синей штуки спарсил..
    Вот просто парсер:
    PHP:
    <?php
    set_time_limit
    (0);
    $url='http://livetv.ru/livescore/';
    $input=file_get_contents($url);

    preg_match_all('/<span .*class="liveb1">(.*)<\/span>/'$input$regs);

    preg_match_all('/<span class="whitesmall">(.*)<\/span>/'$input$regs1);

    $k=count($regs1[1]);
    $r=0;
    $l=1;
    for(
    $i=0;$i<$k$i++)
    {
    echo 
    'Вид:';
    echo 
    $regs1[1][$i];
    echo 
    ' ';
    echo 
    $regs[1][$r];
    echo 
    'Счёт:';
    echo 
    ' ';
    echo 
    $regs[1][$l];
    $r=$r+2;
    $l=$l+2;
    echo 
    '<br>';
    }
    ?>
    Если вам нужно постоянное обновление, то можете положить все данные в БД и постоянно обновлять. Например, с помощью этого скрипта(обновление каждые 30 секунд:(
    PHP:
    <?php
    set_time_limit
    (0);
    ignore_user_abort(true);
    $p=0;
    While(
    $p==0)
    {
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL'Путь к скрипту парсеру');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $result curl_exec($ch);
        
    curl_close($ch);
    sleep(30);
    }
    ?>
    Ну и на вашем сайте из таблицы достаёте. Можете AJAX прикрутить как на том сайте..
     
    yeaahhh нравится это.
  9. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Digwnews, спасибо Вам огромнейшее! :ay:
    Не могли бы немножко пояснить операции с подсчётом строк(?)..?
    Вот не понятны некоторые моменты:
    (Когда будет свободное время - не могли бы вы расписать)

    Код:
    $k=count($regs1[1]); // [COLOR="Red"]&k считаем сколько встречается строк.. а что такое $regs1[1].. Как я понимаю заносим в массив [1] кол-во строк? [/COLOR]
    $r=0;
    $l=1;
    for($i=0;$i<$k; $i++) // Открываем цикл.. [COLOR="Red"]А вот подсчёты числовые с переменными не совсем понимаю.. $i=0, должна быть меньше, чем кол-во найденных строк($k).. $i++? [/COLOR]
    {
    echo 'Вид:';
    echo $regs1[1][$i];
    echo ' ';
    echo $regs[1][$r];
    echo 'Счёт:';
    echo ' ';
    echo $regs[1][$l];
    $r=$r+2; //[COLOR="Red"]и вот эти 2 вычисления не совсем понятны.. [/COLOR]
    $l=$l+2;
    
    
    Извиняюсь, если где-то туплю.. :ah: Хотелось бы закрепить знания..
    Заранее благодарен!
    Буду теперь на основе этого совершенствовать свои знания в области парсинга, так как пока в php нахожусь на уровне чайника (знаю только html+css и умею выдирать из базы какую-нибудь информацию+ мелкие операции)..

    Добавлено через 23 минуты
    Как я понял, эти все операции с числами из-за того, что мы выдираем контент, который стоит в одинаковых html-овских тегах..?
     
  10. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    PHP:
     <?php
    set_time_limit
    (0);
    $url='http://livetv.ru/livescore/';
    $input=file_get_contents($url);//скачиваем страницу

    preg_match_all('/<span .*class="liveb1">(.*)<\/span>/'$input$regs);//выдираем игроков встреч и счета

    preg_match_all('/<span class="whitesmall">(.*)<\/span>/'$input$regs1);//выдираем виды спорта

    $k=count($regs1[1]);//считаем количество видов спорта и, соответственно, встреч
    $r=0;//если посмотреть с помощью print_r($regs[1]), то можно увидеть, что в массиве под элементами 0 2 4 6 и т.д. встречи, а под 1 3 5 7 счета игр. Вот мы в цикле и прибавляем к счётчику элементов массива 2. $r - счётчик элементов массива в цикле встреч
    $l=1;//счётчик элементов массива в цикле счетов
    for($i=0;$i<$k$i++)
    {
    echo 
    'Вид:';
    echo 
    $regs1[1][$i];
    echo 
    ' ';
    echo 
    $regs[1][$r];
    echo 
    'Счёт:';
    echo 
    ' ';
    echo 
    $regs[1][$l];
    $r=$r+2;
    $l=$l+2;
    echo 
    '<br>';
    }
    ?> 
    Судя по всему Вы плохо разбираетесь в регулярках и массивах. Я подозреваю, что вы не знаете о многомерных массивах.
    Поиграйтесь с функцией print_r. Напишите, например:
    echo '<pre>';
    print_r($regs);
    print_r($regs1);

    Добавлено через 26 минут
    Операции с числами - это работа с элементами массивов.
     
    Sywooch и yeaahhh нравится это.
Статус темы:
Закрыта.