граббер текста

Discussion in 'PHP' started by Worms, 14 Oct 2010.

  1. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    Помогите мне!!! нужно вытащить текст с сайта одного, не одной страницы, а все которые идут в рубрике. Как это сделать? или есть ли какие-нибудь похожие программы с этой функцией?
     
  2. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    могу дать ссылку на всю рубрику которую нужно выкачать:
    http://realty.1777.ru/search_real_poisk.php?real_cat_id=35&vtabs=1

    нужен только текст объявления и номера телефонов.
     
  3. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    возможно ли сделать чтобы вытаскивало в таком виде :

    Юго-Запад Тухачевского Перспективный Срочная продажа квартиры без посредников.1-ком

    Ю/З р-он Ж.К. Перспективный 3/12 кирп. дома, 38.3 кв.м, стяжка-штукатурка, приборы учета, индивидуальное отопление, газовая плита, сейфовая дверь, окна пластик, лоджия застеклена.Дом сдан.ЦЕНА 1000.000 СРОЧНО!!! +7-962-440-8194 Алексей 1000000 руб.

    Юго-Запад Пирогова 1ком.кв. 8/10эт. 37,7/19,6/10,2 ремонт, 1300000 руб. 21-67-12,8-962-446-1371 Александр
    Северо-Запад Кулакова просп. пр.. Кулакова, 1-комн. квартира, 2 этаж нового 9этажного кирпичного дома, площадь 37,1/19,2/17,9. лоджия 3,6,сделан ремонт, индивидуальное отопление.цена 1350000руб. торг. 1350000 руб +7-928-326-6831 Виталий
     
  4. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Ну вот очень грубый вариант, просто лениво причёсывать...

    Code:
    #!/usr/bin/perl 
    
    use LWP::UserAgent;
    use HTTP::Cookies;
    use HTML::Entities;
    
    $ua = LWP::UserAgent->new;
    $ua->agent("Opera/9.25 (Windows NT 5.1; U; ru)"); 
    
    $cookie_jar = HTTP::Cookies->new();
    $ua->cookie_jar($cookie_jar);
    
    
    sub logg
    
         {
    	my ($data, $file) = @_;
    	open(OUT, ">> ".$file);
    	print OUT "$data\n";
    	close(OUT);
         }
    
    
    for ($i = 0; $i < 165; $i++)
    
         {
    	my $ex = $ua->get('http://realty.1777.ru/search_real_poisk.php?ch=&ord=&poisk=&poisk2=&tabs=0&poisk5=&poisk3=&real_raz_id=&real_cat_id=35&ot=0&do=1000000000&sort=&mix=&pajina='.$i)->content();
    	
    	my @infos = $ex =~ /<td width=80% valign=top colspan=2><span class=header_red>(.+?)<noindex>/gs;
    
    	foreach $info (@infos)
    	     {
    		$info =~ s/&nbsp;/ /g; decode_entities($info); $info =~ s/<.+?>/ /g; $info =~ s/\s+/ /g;
    
    		logg($info."\n\n", 'data.txt');
    	     }
    
    	print('page '.$i."\n");
         }
    
    
    system("pause");
     
    #4 Fepsis, 14 Oct 2010
    Last edited: 14 Oct 2010
  5. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    это куда надо воткнуть?
     
  6. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Активперл скачай и создай файл с вышеуказаным кодом script.pl

    вот результат с первых 2- страниц:
     
    1 person likes this.
  7. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    а возможность есть такая чтобы дату убрать и в одну строку чтобы делало
     
  8. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    а где потом скрип поменять чтобы на другую рубрику работал? 2х комнатне например?
     
  9. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Без даты:
    Code:
    #!/usr/bin/perl 
    
    use LWP::UserAgent;
    use HTTP::Cookies;
    use HTML::Entities;
    
    $ua = LWP::UserAgent->new;
    $ua->agent("Opera/9.25 (Windows NT 5.1; U; ru)"); 
    
    $cookie_jar = HTTP::Cookies->new();
    $ua->cookie_jar($cookie_jar);
    
    
    sub logg
    
         {
    	my ($data, $file) = @_;
    	open(OUT, ">> ".$file);
    	print OUT "$data\n";
    	close(OUT);
         }
    
    
    for ($i = 0; $i < 2; $i++)
    
         {
    	my $ex = $ua->get('http://realty.1777.ru/search_real_poisk.php?ch=&ord=&poisk=&poisk2=&tabs=0&poisk5=&poisk3=&real_raz_id=&real_cat_id=35&ot=0&do=1000000000&sort=&mix=&pajina='.$i)->content();
    	
    	my @infos = $ex =~ /<td width=80% valign=top colspan=2><span class=header_red>(.+?)<noindex>/gs;
    
    	foreach $info (@infos)
    	     {
    		$info =~ s/&nbsp;/ /g; decode_entities($info); $info =~ s/<.+?>/ /g; $info =~ s/\s+/ /g; $info =~ s/^(.+?)\s//g;
    
    		logg($info."\n\n", 'data.txt');
    	     }
    
    	print('page '.$i."\n");
         }
    
    
    system("pause");
    
    Меняй линк в скрипте, чтобы с другими параметрами парсил...
    Code:
    my $ex = $ua->get('http://realty.1777.ru/search_real_poisk.php?ch=&ord=&poisk=&poisk2=&tabs=0&poisk5=&poisk3=&real_raz_id=&real_cat_id=35&ot=0&do=1000000000&sort=&mix=&pajina='.$i)->content();
     
  10. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    кстати второй скрипт что ты без даты сделал,качает только одну страницу...а так все то что надо!
     
  11. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,027
    Likes Received:
    525
    Reputations:
    285
    сравни в конфиге че он правил - логически
     
  12. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    и еще вопрос, есть раздел в том сайте,платный, по авторизации открывается платная услуга и все это висит под одним линуом,а текст разный, это никак обойдется?
     
  13. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Ну там цикл просто стоит
    for ($i = 0; $i < 2; $i++)

    исправь на
    for ($i = 0; $i < 165; $i++)

    По поводу платного раздела это тебе к хекерам.. :)
     
  14. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    а я тут подумал над этим! если сохранить страницу сайта на жесткий, с локального диска будет этот скрип грабить?
     
  15. Ugol

    Ugol Banned

    Joined:
    26 Dec 2009
    Messages:
    195
    Likes Received:
    2
    Reputations:
    0
    Если нет будет подключен то почему нет
     
  16. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    а как подключить? я вставляю ссылку на саохраненный фаил ,а он не хочет...
    вот так делаю
    my $ex = $ua->get('file://localhost/C:/сохраненная%20страница.mht'.$i)->content();
     
  17. Ugol

    Ugol Banned

    Joined:
    26 Dec 2009
    Messages:
    195
    Likes Received:
    2
    Reputations:
    0
    Вот смотри тебе же пример написали:

    my $ex = $ua->get('http://realty.1777.ru/search_real_poisk.php?ch=&ord=&poisk=&poisk2=&tabs=0&poisk5=&poisk3=&real_raz_id=&real_cat_id=35&ot=0&do=1000000000&sort=&mix=&pajina='.$i)->content();
     
  18. Worms

    Worms Elder - Старейшина

    Joined:
    9 May 2006
    Messages:
    95
    Likes Received:
    0
    Reputations:
    0
    с этим я разобрался! но я чет не вдупляю как заставить с жесткого диска так же заработать...
     
  19. napas_hd

    napas_hd Member

    Joined:
    29 Dec 2008
    Messages:
    61
    Likes Received:
    17
    Reputations:
    0
    Ставь денвер, сохраняй в html, скрипту скармливай адрес странички на локалхосте.
     
  20. Ugol

    Ugol Banned

    Joined:
    26 Dec 2009
    Messages:
    195
    Likes Received:
    2
    Reputations:
    0
    что именно заставить?
    Как ты себе это представляешь.
    Тебе на хост залить нужно или что?