Парсер телепрограммы и гороскопов

Тема в разделе "Как сделать...", создана пользователем RALF, 7 май 2008.

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

    RALF черный рыцарь

    Регистр.:
    1 май 2006
    Сообщения:
    114
    Симпатии:
    25
    Нужно написать парсер для телепрограммы и гороскопов (Пример вида телепрограммы - http://goroskop.ru/tv/channels/
    Пример гороскопов - http://goroskop.ru/ - на главной сайта маленькие иконки знаков зодиака.)

    Нужен нормальный парсер для реализации аналога того, что есть на этих сайтах
     
  2. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    Ну вытащить программу передач на текущий день можно так:
    PHP:
    $pattern '/<div id="tvListing">(.*)<div class="pusher"><\/div>/s';

        
    $data1 file_get_contents("http://goroskop.ru/tv/channels/");
        if(
    preg_match($pattern$data1$matches))
            {
            
    print_r($matches);
            }
     
  3. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    Я что-то не понял... А втор топика хочет предложить работу?
     
  4. WaterSpirit

    WaterSpirit Читатель

    Регистр.:
    16 июл 2007
    Сообщения:
    113
    Симпатии:
    18
    Прикольный скрипт. Но есть одно маленькое но, я не проф в програмировании код парсит без проблем, но почему то раздваивает. Тобишь делает две копии одного и того же на одной странице. Как это можно исправить неподскажите?
     
  5. DOLARiON

    DOLARiON

    Регистр.:
    4 сен 2006
    Сообщения:
    191
    Симпатии:
    48
    оп-оп-оп.... а не проще дергать программу по xml?! :nezn:
    к примеру отсюда:

    http://www.teleguide.info/download/new3/xmltv.xml.gz


    в по гороскопам.... я юзаю выдранный парсер из newsgrabber... правда старой версии, но пашет на ура!
    Посмотреть вложение parce.inc.rar

    инклюдим файлик и...
    юзаем примерно так:
    PHP:
        $postinformation = Array(
            
    "rss_url" => "http://www.site.ru/data.html",
            
    "prrss_url" => "",
            
    "rss_titletemplate" => '<tr class="{skip}"><td class="year"><p>{part1}</p></td><td class="film_info"><p><a href="/info/{part2}/">{title}</a></p>{part29}</p></td></tr>',
            
    "rss_print_link_from" => "",
            
    "rss_print_link_to" => "",
            
    "rss_replacement" => ""
        
    );
        
        
    $response get_ArrayContent($postinformation);
    парсит все че угодно, как угодно, где угодно :)

    параметры в фигурных скобках могут быть такими:
    PHP:
    {title|part1|part2|part3|part4|part5|part6|part7|part8|part9|part10|part11|part12|part13|part14|part15|part16|part17|part18|part19|part20|part21|part22|part23|part24|part25|part26|part27|part28|part29}
    :)
     
  6. Drimean

    Drimean _

    Регистр.:
    25 мар 2006
    Сообщения:
    559
    Симпатии:
    75
    Если не жаль немного денег, есть такой серивис, как http://s-tv.ru . За смехотворную сумму они будут по четвергам высылать телепрограмму на e-mail. И мучиться с парсингом не надо.
     
  7. a1exsh

    a1exsh Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    97
    Симпатии:
    74
    PHP:
    print_r($matches);
    измени на 
    print_r
    ($matches[0]);
     
  8. Tushkan

    Tushkan

    Регистр.:
    9 апр 2007
    Сообщения:
    208
    Симпатии:
    61
    Прошу помощи!
    Реализация парсера шикарная...
    Всё работает на ура...
    Но есть одно но..
    Необходимо вырезать ссылки..
    Мучаюсь, ни чего не выходит...
    Вот на приведённом примере...
    PHP:

    <?php 
    $pattern 
    '/<div id="tvListing">(.*)<div class="pusher"><\/div>/s'

        
    $data1 file_get_contents("http://goroskop.ru/tv/channels/"); 
        if(
    preg_match($pattern$data1$matches)) 
            { 
            
    $matches=strip_tags($matches'<h1>, <div>, <p>, <br>, <b>, <i>');    
            
    print_r($matches[0]); 
            } 
    ?>
    Таким макаром ничего не выходит... :nezn:

    Чем можно заменить strip_tags?

    ГУРУ направьте на путь истинный :thenks:

    з.ы. Можно ни чего не расписывать просто носом ткните...
     
  9. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    Зачем заменять?
    PHP:
    <?php 
    $pattern 
    '/<div id="tvListing">(.*)<div class="pusher"><\/div>/s'

        
    $data1 file_get_contents("http://goroskop.ru/tv/channels/"); 
        if(
    preg_match($pattern$data1$matches)) 
            { 
            
    $matches=strip_tags($matches[0], '<h1>, <div>, <p>, <br>, <b>, <i>');    
            print 
    $matches
            } 
    ?>
     
    Tushkan нравится это.
  10. Tushkan

    Tushkan

    Регистр.:
    9 апр 2007
    Сообщения:
    208
    Симпатии:
    61
    Блин, вот дурик...:(
    Это надо..
    А я всю голову сломал уже...
    Всё так элементарно... :yahoo:
    Видимо заработался уже... :)

    Kaimi Огромная человеческая благодарность! :ay:

    з.ы.
    Оказалось, что исходная кодировка в win1251, а надо в utf8, добил...
    PHP:
    print iconv('cp1251''utf-8'$matches); 
     
Статус темы:
Закрыта.