Новый риан.ру - новый граббер :)

Тема в разделе "Мелочи", создана пользователем B1rdEX, 20 авг 2008.

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

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    Итак, вот обновленная версия, пользуйтесь на здоровье ;)

    PHP:
    <?php

    setlocale
    LC_ALL'ru_RU' );

    define ("DBHOST"""); // мускул хост
    define ("DBNAME"""); // мускул бд
    define ("DBUSER"""); // мускул юзер
    define ("DBPASS"""); // мускул пасс

    $band 0;

    require( 
    'db.class.php' ); //клас работы с бд от ДЛЕ
    $db = new db();

    function 
    get_real_time()
    {
        list(
    $seconds$microSeconds) = explode(' 'microtime());
        return ((float)
    $seconds + (float)$microSeconds);
    }

    $started get_real_time();

    $wher = array ('politics''economy''society''culture''incidents'); // категории с которых берем контент
    $where $wher;
    if(
    $_GET['what'])$where = array($_GET['what']);

    foreach (
    $where as $whr) {

        
    $f fopen("http://pda.rian.ru/{$whr}/",'r');


        while(!
    feof($f)) {

            @
    $qwerty .= fread($f,1024);

        }

        
    $band += strlen($qwerty);

        
    fclose($f);

        
    $qwerty iconv('utf-8''windows-1251//IGNORE'$qwerty );

        
    $start_up strpos($qwerty,'<ul class="list">');
        
    $stop_up strpos($qwerty,'</ul>');

        
    $up substr($qwerty,$start_up,$stop_up-$start_up);

        
    $reto preg_split'#<li>|</li>#'$up, -1PREG_SPLIT_NO_EMPTY );
        unset ( 
    $qwerty$up$reto[0] );
        
    $c 0;
        foreach ( 
    $reto as $v ) {
            
    $c++;

            
    /*
            <a href="/politics/20080818/150466776.html"><span class="dblue">18:49 </span><span class="blue">18/08/08 </span><b>России придется тяжело расплачиваться за насилие - Маккейн</b> "В сотрудничестве с нашими друзьями и союзниками в Европе мы ясно заявим российским правителям, что за акты насилия и запугивания придется тяжело расплачиваться. Среди государств "большой восьмерки" или в ВТО не будет места для сегодняшней России", - сказал Маккейн.</a>
            */

            
    preg_match'#<a href="([^">]+)"><span class="dblue">[^<]*</span><span class="blue">[^<]*</span><b>([^<]*)</b>([^</a>]*)</a>#'$v$p );

            if ( ! 
    count$p ) ) {
                continue;
            } else {

                
    $q $db->query"select id from dle_post where link = '{$p[1]}' limit 1" );

                if ( 
    $q && mysql_num_rows$q ) ) {
                    continue;
                } else {

                    
    $h fopen"http://pda.rian.ru{$p[1]}"'r' );
                    
    $f '';
                    while ( !
    feof$h ) ) {
                        
    $f .= fread$h10024 );
                    }

                    if ( 
    $f ) {

                        
    $band += strlen$f );

                        
    $f iconv'utf-8''windows-1251//IGNORE'$f );

                        
    $s_s strpos$f'<div id="article" class="w-clear">' );
                        
    $s_e strpos$f'<p class="align_c"><a href="/" class="orng">' );

                        
    $f substr$f$s_s, ( $s_e $s_s ) );

                        
    $f preg_replace'#<span class="blue">[^<]*</span>#'''$f );
                        
    $f preg_replace'/<strong>.*РИА.*<\/strong>[\.|\s]/'''$f );
                        
    $f preg_replace'#<a.*>(.*)</a>#'"$1"$f );

                        
    $result[$c]['title'] = $p[2];
                        
    $result[$c]['short'] = $p[3];
                        
    $result[$c]['link'] = $p[1];
                        
    $result[$c]['full'] = $f;

                        
    fclose$h );

                    }

                }

                
    sleep);

            }
        }
    echo 
    $whr " done<br />\n";
    }
    $c 0;
    if ( 
    count$result ) ) {
        foreach ( 
    $result as $v ) {
            
    $time mt_rand(100,3000);
            
    $c++;

            
    $v['short'] = $db->safesql$v['short'] );
            
    $v['full'] = $db->safesql$v['full'] );
            
    $v['title'] = $db->safesql$v['title'] );

            
    $v['tt'] = totranslit($v['title']);

            
    $query "INSERT INTO `dle_post` (`id` ,`autor` ,`date` ,`short_story` ,`full_story` ,`xfields` ,`title` ,`descr` ,`keywords` ,`category` ,`alt_name` ,`comm_num` ,`allow_comm` ,`allow_main` ,`allow_rate` ,`approve` ,`fixed` ,`rating` ,`allow_br` ,`vote_num` ,`news_read` ,`votes` ,`access` ,`expires` ,`symbol` ,`flag` ,`link`)
    VALUES (
    NULL , 'admin', '"
    gmdate("Y-m-d H:i:s"time() + (11*60*60) + $time) ."', '{$v['short']}', '{$v['full']}', '', '{$v['title']}', '', '', '1', '{$v['tt']}', '0', '1', '1', '1', '0', '0', '0', '1', '0', '0', '0', '', '0000-00-00', '', '1', '{$v['link']}'
    );"
    ;

            if( ! 
    $db->query$query ) ) echo "smth bad :(\n";

        }
    }
    echo 
    "Made $c in: "; echo get_real_time() - $started;
    echo 
    "\n\r Traff: $band";

    function 
    totranslit($var)
    {
        
    $NpjLettersFrom "абвгдезиклмнопрстуфцы";
        
    $NpjLettersTo   "abvgdeziklmnoprstufcy";
        
    $NpjBiLetters = array(
        
    "й" => "jj""ё" => "jo""ж" => "zh""х" => "kh""ч" => "ch",
        
    "ш" => "sh""щ" => "shh""э" => "je""ю" => "ju""я" => "ja",
        
    "ъ" => """ь" => "",
        );

        
    $NpjCaps  "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ";
        
    $NpjSmall "абвгдеёжзийклмнопрстуфхцчшщьъыэюя";

        
    $var str_replace(".php"""$var);
        
    $var trim(strip_tags($var));
        
    $var preg_replace"/\s+/ms""-"$var );
        
    $var strtr$var$NpjCaps$NpjSmall );
        
    $var strtr$var$NpjLettersFrom$NpjLettersTo );
        
    $var strtr$var$NpjBiLetters );

        
    $var preg_replace("/[^a-z0-9\_\-.]+/mi"""$var);
        
    $var=preg_replace('#[\-]+#i''-'$var);
        
    $var strtolower $var );

        if (
    strlen($var) > 40) {

            
    $var substr ($var040);

            if ((
    $temp_max strrpos($var'-')))  $var substr ($var0$temp_max);

        }

        return 
    $var;
    }
    ?>
    Для работы необходимо добавить в таблицу dle_post поле `link`, чтобы отслеживать дубликаты.
    Категории смотрим на риан.ру ;)

    пс. кнопка спасибо справа ниже ;)
     
    jhst и BlackSmoke нравится это.
  2. liliputishe

    liliputishe

    Регистр.:
    5 май 2007
    Сообщения:
    153
    Симпатии:
    96
    так это граббер для ДЛЕ?
     
  3. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    Ну какбэ да, только я не уверен что он до сих пор работает.
     
  4. bobkli

    bobkli Местный

    Регистр.:
    2 ноя 2007
    Сообщения:
    691
    Симпатии:
    116
    Кто пробовал отпишитесь плиз
    что и как?
     
  5. mZzztrix

    mZzztrix Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    113
    Симпатии:
    64
    Попробуй вот этот. Должен работать но не со всеми сайтами:
    DLE Grabber Private V9.2– полноценный скрипт для быстрого наполнения сайта контента.Граббер умеет грабить 99% всех существующих DLE сайтов, на различных движках от версии 7.2 до 7.5 ! Так же он и работает на этих версиях. Кредо грабера заключается в его скорости и качественности парсинга контента и самое главное в экономности траффика!
    Преимущества:


    * Поддержка авторизации
    * Граббинг с 99% сайтов на DLE
    * Установка на сайт в один клик
    * Молниеносная скорость парсинга
    * Настройка: просто залить на фтп
    * Возможность вписывать имя автора новости!

    Перейти по ссылке
    Просто я до хайда не дотягиваю - проверить не могу :)
     
  6. lunek

    lunek Писатель

    Регистр.:
    6 сен 2007
    Сообщения:
    3
    Симпатии:
    1
    Отлично работает RSS Grabber v.3.0.2
     
  7. skier529

    skier529 Постоялец

    Регистр.:
    7 апр 2009
    Сообщения:
    80
    Симпатии:
    7
    На данный момент самым последним является 3.1, на него нареканий нет в плане работы...
     
  8. bobkli

    bobkli Местный

    Регистр.:
    2 ноя 2007
    Сообщения:
    691
    Симпатии:
    116
    Он не работает уже :(
     
Статус темы:
Закрыта.