ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 21.11.2008, 08:49
Аватар для Zircool
Zircool
Участник форума
Регистрация: 01.03.2006
Сообщений: 169
Провел на форуме:
519496

Репутация: 78
Отправить сообщение для Zircool с помощью ICQ
По умолчанию

Такой вопрос..скрипт граббера, этот скрипт загоняется в крон и ставится обновление к примеру на 12 часов и сайт автоматически наполняется новостями. Но основная проблема скрипта это запрет граббинга новостей которые уже были сграбблены. Функционально это оформлено так. Скрипт открывает страницу сайта с новостями (откуда будут граббится новости) копирует ссылки новостей, а затем отдельным циклом начинает грабить с каждой ссылки, при удачном граббинге записывает имя ссылки в файл grabbered.txt. Затем если мы заново запускаем скрипт, но с помощью функции array_search проверяем была ли сграблена эта новость или нет, если не была то грабим иначе ничего не делаем, но вот почему то именно эта проверка работает некорректно, вообще не работает. Посмотрите пожалуйста, может у кого нибудь есть идеи как по другому оформить цикл проверки..

PHP код:
include("./cron/newsland.php");
// собираем линки новостей
$ch curl_init();

    
curl_setopt($chCURLOPT_URL,$url_grub);
    
curl_setopt($chCURLOPT_HEADERFALSE);
    
curl_setopt($chCURLOPT_NOBODYFALSE);
    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_USERAGENT"MSIE 7.0");
    
curl_setopt($chCURLOPT_TIMEOUT20);
    
$text curl_exec($ch);
    
curl_close($ch);
    
preg_match_all("#<a href=\"\/News\/Detail\/id\/(.+)\">#",$text,$results);

for(
$i=0;$i<count($results[0]);$i++)
{
$urlsis="http://newsland.ru".str_replace(array('<a href="','">'),null,$results[0][$i]);
if (
$urlsis!="http://newsland.ru/News/Detail/id/284971/cat/78")
          {
          
$urlsos[]=$urlsis;

          }
          else
          {}
}


$list_garb=file("./grabbered.txt");
$check_file=array_map("trim",$list_garb);

foreach (
$urlsos as $urls_get )
  {
   
$urls_get=trim($urls_get);
   if (
array_search($urls_get,$check_file)==FALSE)
  {
     
// берем текст новости
    
$text_news file_get_contents($urls_get);
     
/// вырезаем текст статьи
    
preg_match('#<h1 class="mt10 grey">(.*?)</h1>(.*?)<div class="bodytext mt5">(.*?)</div></div>#s',$text_news,$result_news);
    
// меняем кодировку
    
$result_news[0]=iconv("UTF-8""WINDOWS-1251",$result_news[0]);
    
//работаем с рисунком новости
    
preg_match('#<img src="(.+)" title="(.+)" alt="(.+)" class="floatr mt10">#',$result_news[0],$result_image);
    
// скачиваем картинку
    
$result_load_image=file_get_contents("http://newsland.ru".$result_image[1]);
    
$name_image=substr($result_image[1],strrpos($result_image[1],"/")+1);
    
$good_image fopen("./rssnews_image/".$name_image"w");
    
fputs($good_image$result_load_image);
    
/// создаем текст статьи для записи в файл
    
$src="<div style=\"float: left;\"><img src=\"./rssnews_image/".$name_image."\" title=\"".$result_image[2]."\" alt=\"".$result_image[2]."\" class=\"imagestyle\"></div>";
    
$time=date(d."-".m."-".y)."\r\n";
    
$title=$result_image[2]."\r\n";
    
$name=date("y-m-d-H-i-s");
    
$body=str_replace(array('<div class="bodytext mt5">',$result_image[0],'</div>','<div class="newsctrl f12 mt10"><div>','</div></div>'),null,$result_news[0]);
    
$body=preg_replace('#<h1 class="mt10 grey">(.+)</h1>#',null,$body);
    
$body=str_replace('<a','<br><br><a',$body);

    
preg_match_all('#(.*?)\.#is',$body,$out_anonce);
    for(
$r=0;$r<5;$r++)
    {
    
$body=str_replace($out_anonce[0][$r],$out_anonce[0][$r]."\r\n",$body);

    }

         
$good fopen("./rssnews_/".$name.".txt""w");
          
fwrite($good,$time.$title.$src."\r\n".$body);
          
fclose($good);

         
$good_urls fopen("./grabbered.txt""a");
          
fwrite($good_urls,$urls_get."\r\n");
          
fclose($good_urls);
          
sleep(1);
   }
   else
   {

   }


 } 
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ