HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 78
По умолчанию

Такой вопрос..скрипт граббера, этот скрипт загоняется в крон и ставится обновление к примеру на 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#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...