Грабер котировок

Тема в разделе "Коммерческие", создана пользователем Trial, 23 июл 2008.

Информация :
Публиковать (для всех) нуленые версии, особенно от modulesgarden КАТЕГОРИЧЕСКИ не стоит. Тема мониторится оным разработчиком, а к нам приходят абузы которые нельзя игнорировать.
Статус темы:
Закрыта.
Модераторы: Amazko, Aste
  1. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Ищу грабер котировок и курсов валют с http://www.rbc.ru/
    (смотрите в правой колонке)
    вот приблизительный вид того что я хотел бы получить
     

    Вложения:

    • primer.gif
      primer.gif
      Размер файла:
      10,7 КБ
      Просмотров:
      15
  2. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Да все информеры вставляются через Джава скрипт. так что они и так не индексируються, а вот пользователи по ним гарантировано преходить будут т.к. там есть в низу информера название проекта и каждый пункт информера тоже ссылка (пример "курс USD" - это сылка)

    Добавлено через 12 минут
    Из меня знаток PHP совершено не какой, но пердполагаю что это можно сделать преблизительно вот таким образом
    PHP:
    <?php 
    //занесет строки файла в масив
    $lines file('http://www.rbc.ru/');

    //а здесь тупо выведет номер нужных мне строк с очисткой от HTML
    echo strip_tags($lines[630]);

    ?>
    но вот тут проблема. Я так полагаю, что количество строк на сайте меняется каждый день и следовательно у меня будет выводиться белеберда хотя сейчас вроде выводит нужное.
    Может кто есть оптный, поможет ведь скрип то не сложный, а пригодился бы многим я думаю, да и нет таких вроде еще уникальность какая не какая.
     
  3. AgpeHaJIuH

    AgpeHaJIuH Постоялец

    Регистр.:
    7 июл 2008
    Сообщения:
    67
    Симпатии:
    19
    Вот на скорую руку написал по твоей идее, это конечно не самая лучшая реализация, но думаю с пивом сойдет...

    PHP:
    //искомый контент заключен в контейнер с id="rateContainer"
    //вырезаем из кода страницы содержимое, заключенное в этом контейнере
    $b_tag '<table width=100% class="rate">'//берем контент отсюда 
    $e_tag "</table>";      //до сюда
    $page file_get_contents("http://www.rbc.ru/");
    $beginstrpos ($page$b_tag);
    $page=substr($page,$begin);
    $endstrpos ($page$e_tag);
    $page=substr($page,0,$end);
    //контент вырезали, остается удалить все ссылки
    preg_match_all('/(href=")(.*?)(")/i',$page,$matches);
    //вывод результата:
    echo preg_replace('/(href=")(.*?)(")/i'''$page);
    //зы, в результате остаются стили источника, поэтому не забудьте включить в свой .css нужные стили,  
    //либо замените с помощью того же  preg_replace строки типа div class="indexes green" на свои стили

     
    spa нравится это.
  4. spa

    spa Читатель

    Заблокирован
    Регистр.:
    23 окт 2007
    Сообщения:
    112
    Симпатии:
    119
    Вырезал погоду, ибо москва не всем нужна + почистил код :)
    <?php
    echo '<style>
    .rate {
    width: 200px;
    font-family: Tahoma, Arial, Verdana;
    font-size: 7px;
    }
    .red { color:red; }
    .green { color:green; }
    </style>';

    $page = file_get_contents("http://www.rbc.ru/"); // контент берем с этой страницы

    $b_tag = '<table width=100% class="rate">'; // вырезаем контент от сюда
    $e_tag = '<TD><a href="http://pogoda.rbc.ru">'; // до сюда

    $begin = strpos ($page, $b_tag);
    $page = substr ($page, $begin);
    $end = strpos ($page, $e_tag);
    $page = substr ($page, 0, $end);

    // контент вырезали, почистим код
    $page = preg_replace('/(<i><\/i><span><A)(.*?)(>)/i', '', $page);
    $page = preg_replace('/(<\/A><\/span>)||(width=100% )/i', '', $page);
    $page = preg_replace('/(indexes red)/i', 'red', $page);
    $page = preg_replace('/(indexes green)/i', 'green', $page);

    // вывод результата:
    echo $page.'<td align=center colspan=4><b>nulled.ws</b></td></tr></table>';
    ?>
     
    kykc, Trial и AgpeHaJIuH нравится это.
  5. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Спасибо за помощь, но как я понимаю при таком раскладе страница RBC.ru загружаются полностью со всей графикой и всем содержимым, а потом обрабатывается скриптом и выводит нужную информацию (т.е. каждый раз пользователи будут загружать вместо одной страницы две - поправьте меня если я не прав). Дак вот нельзя ли сделать так чтоб смачивание (соединение с rbc.ru) было только раз в 30мин. , а во всех остальных случаях данные (те которые обработал скрипт) брались скажем из файла в котором они хранятся с предыдущего соединения т.е. что то на типо кэширования.
    Помогите кто может пожалуйста.
     
  6. spa

    spa Читатель

    Заблокирован
    Регистр.:
    23 окт 2007
    Сообщения:
    112
    Симпатии:
    119
    Trial, пользователь получает информацию, только когда обновляет твою страницу.
    При этом он загружает всего 3Кб кода (2Кб - html и 1Кб - widget_cbr.xml).
    Можешь сделать не сквозной инклюдинг, а только на главной, как на РБК.
    Тогда пользователь будет получать эти 3Кб кода, только когда заходит на главную.

    Можешь сам проверить: почистить кэш браузера, потом выполнить PHP-код и в кэше у тебя появятся всего два файла.
    Так что весь сайт РБК грузить не придется.;)
     
  7. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Я немного не так выразился скрипт вот этой
    PHP:
    $page file_get_contents("http://www.rbc.ru/"); // контент берем с этой страницы
    строкой загружает на серветр где находиться сайт всю страницу целиком и там эту страницу обрабатывает, а пользователю отдает нужную инфу ну если он для каждого раза будет загружать на сервер эту страницу целиком не будет тогда от этого сильно тормозить та страница на которой выводиться эта инфа? Мне просто хочется болие подробно разобраться во всем этом, а не тупо поставить и забыть.

    И еще подскажите как из переменной $page (в ее последнем варианте т.е. с обработанными данными) сделать масив и чтоб каждый инекс масива был равен номеру строки (т.е. $a[0] //это срока первая) какой функцыей можно энто сделать
     
  8. AgpeHaJIuH

    AgpeHaJIuH Постоялец

    Регистр.:
    7 июл 2008
    Сообщения:
    67
    Симпатии:
    19
    А зачем тебе такое нужно, если не секрет?
    Вот так можно разбить по строчкам:

    PHP:
    $rows explode("\n"$page);
    print_r ($rows);//вывод всего массива
    /*Резал типа
        [0] => <table width=100% class="rate">
        [1] => 
        [2] => <TR>
        [3] => <TD width=50% nowrap="nowrap"><b>Курсы валют на&nbsp;</b></TD>
        [4] => <td width=10%><b>24.07</b></td>
        [5] => <TD align=right width=20%><B>Спрос</B></TD>
        [6] => <TD align=right width=20%><B>Предл.</B></TD>
        [7] => </TR>
        ....................
    */
    Или можно разбить по определенному элементу, например по </TR> или по </TD>
    PHP:
    $rows explode("</TR>"$page);
    print_r ($rows);//вывод всего массива
    /*Резалт
    [0] => <table width=100% class="rate">
    <TR>
    <TD width=50% nowrap="nowrap"><b>Курсы валют на&nbsp;</b></TD>
    <td width=10%><b>24.07</b></td>
    <TD align=right width=20%><B>Спрос</B></TD>
    <TD align=right width=20%><B>Предл.</B></TD>

    [1] => 
    <TR>
    <TD><div class="indexes green"><i></i><span><A HREF="http://www.rbc.ru/cash/">Нал. USD</A></span></div>
    </TD>
    <TD>23:17</TD>
    <TD align=right>23.227</TD>
    <TD align=right>23.339</TD>
    .....................
    */
     
  9. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Нет не секрет.
    Из этого можно сделать много блоков типо один выводит курсы валют, другой катировки брать просто нужную сроку и все.
    А вообще, можно сделат много информеров (чтоб любой желающий мог поставить к себе на сайт путем JS и ему хорошо и на мой сайт +1 ссылка).
     
  10. ksana

    ksana

    Регистр.:
    15 июл 2008
    Сообщения:
    160
    Симпатии:
    15
    половина текста выводится ??????????.

    Поставила этот код на страницу, так половина текста выводится ??????????.

    Как с этим бороться?

    И страница, кстати, намного дольше грузится.
     
Статус темы:
Закрыта.