Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите в создании скрипта поиска по документу 
:(
    Опции темы
Teem
Дата 10.3.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Здравствуйте.
Я начинаю только работать с Perl.
Столкнулся вот с такой проблемой. Нужно осуществить поиск на нескольких страницах по заданному слову и вывести ссылку на подготовленный шаблон страницы.
Подскажите пожалуйста с чего начать, да и вообще реально ли это сделать на Perl?
PM MAIL   Вверх
dva300
Дата 10.3.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: нет
Всего: 1



Цитата(Teem @ 10.3.2010,  15:14)
Здравствуйте.
Я начинаю только работать с Perl.
Столкнулся вот с такой проблемой. Нужно осуществить поиск на нескольких страницах по заданному слову и вывести ссылку на подготовленный шаблон страницы.
Подскажите пожалуйста с чего начать, да и вообще реально ли это сделать на Perl?

если вывод в консоль ( и если я правильно понял что тебе нужно smile ) то как-то так
Код

use strict;
use LWP;
use HTTP::Request::Common;



#Слова для поиска / URL шаблона страницы
my %sys_menu = (
    'http://usr1.ru' => "help",
    'http://usr2.ru' => "news",
    'http://usr3.ru' => "faq",
    'http://usr4.ru' => "info",
    'http://usr5.ru' => "perl"
);    

# Страницы которые надо анализировать
my @urls = ("http://yandex.ru","http://google.com","http://www.devdaily.com");
my $ua = LWP::UserAgent->new;

foreach my $var (keys(%sys_menu))
    {
    foreach my $i (@urls)
        {
        if (&get_($i) =~ /$sys_menu{$var}/gi)
            {
            #URL анализируемой страницы/Слова для поиска/Шаблон страницы
            print "$i -> $sys_menu{$var} -> $var\n";
            }
        }    
    }
sub get_
    {
    my $url = shift;
    # sleep(1);
    my $rc = GET ("$url");
    my $rs = $ua->request($rc);
    die $rs->message unless $rs->is_success;
    my $content = $rs->content;    
    return $content;
    }
    


вывод будет примерно такой
Код

http://www.devdaily.com -> faq -> http://usr3.ru
http://yandex.ru -> info -> http://usr4.ru
http://www.devdaily.com -> perl -> http://usr5.ru
http://yandex.ru -> news -> http://usr2.ru
http://google.com -> news -> http://usr2.ru
http://www.devdaily.com -> news -> http://usr2.ru
http://yandex.ru -> help -> http://usr1.ru
http://www.devdaily.com -> help -> http://usr1.ru


если в web то добавь Content-type...
--------------------
Участник движения Культура Вождения
PM   Вверх
dva300
Дата 10.3.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: нет
Всего: 1



немного не привильно конечно...
в приведенном выше коде будет отмеченно только одно совпадение на странице.
Код

foreach my $var (keys(%sys_menu))
    {
    foreach my $i (@urls)
        {
        my $content = &get_($i);
        my (@lines) = split(/\n/,$content);
        foreach (@lines)
            {
            if (/$sys_menu{$var}/i)
                {
                #URL анализируемой страницы/Слова для поиска/Шаблон страницы
                print "$i -> $sys_menu{$var} -> $var\n";
                }
            }
        }    
    }


данные изменения помогут найти слова в рамках всего документа если те стречаются несколько раз ( но не в одной строке) и только при старте из под windows 
Код

my (@lines) = split(/\n/,$content);

\n надо заменить на соответствующий конец строки 

Я забыл как нужно сие корректно указать  smile 
может кто даст коректный пример
--------------------
Участник движения Культура Вождения
PM   Вверх
Teem
Дата 10.3.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Ну вообще то мне нужно и сделать поиск именно по страницам из определенной директории на диске. Дело в том что я делаю справочник в электронном виде ну и для быстроты поиска определенной темы необходим поиск
PM MAIL   Вверх
dva300
Дата 10.3.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: нет
Всего: 1



Цитата(Teem @ 10.3.2010,  17:40)
Ну вообще то мне нужно и сделать поиск именно по страницам из определенной директории на диске. Дело в том что я делаю справочник в электронном виде ну и для быстроты поиска определенной темы необходим поиск

вот блин  smile 
--------------------
Участник движения Культура Вождения
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.