![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Вопрос конечно децкий.
Подскажите плз как заставить LWP собрать все ссылки сайту и собрать контент. в топиках - не понял ничего. Заранее кланяюсь. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
trigger, здесь поиск на форуме, уже слишком много отвечали на этот деццкий вопрос ;)
|
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
про наличие поиска осведомлен я и написал что не понял ничиго.
|
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
trigger, тогда ты просишь написать за тебя всё?
![]() напиши чего ты не понял и в каком посте ![]() Добавлено @ 15:55 бедм выяснять и учить ;) |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
приятно..... но писать за меня не надо
![]() Скрипт ниже честно содрал - не работает попытался разобраться как работает - понял только на уровне подсознания. Может есть и другие варианты!? Я понимаю что модулю LWP дать адрес и он скачает страницу и всякие атрибуты. Но я не понимаю как заставить его проверить наличие ссылок (документов) - тоесть пойти дальше по сайту , собрать это все воедино, и какими методами этого добиться. выражение my $base = 'http://www.someplace.com'; переменной присвоили адрес my %href = ($base => 1); ниже мне совершенно непонятно - это толкает его дальше ? Прошу прощения что не в цвете ================================= то что нашел на форуме : #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTTP::Headers; my $base = 'http://www.someplace.com'; my %href = ($base => 1); # общее хранилище ссылок инициализируем начальным адресом my $ua = LWP::UserAgent->new; my ($res, $content); # временный хеш для новых ссылок my %new_href = (1 => 1); # если есть хоть одна новая ссылка while (scalar keys %new_href) { # они должны быть уже в %href ![]() %new_href = (); # проходим по хешу еще раз while (my($k, $v) = each %href) { # если сылка еще не посещалась if ($v) { $res = $ua->get($k); # если нормально получили документ if ($res->is_succes) { # обнуляем посещенную ссылку $href{$k} = 0; $content = $res->content; while ($content =~ /<a href=(["'])?($base.+)\1[\s>]/gi) { # если такой ссылки еще нет $new_href{$2} = 1 unless (exists($href{$2})); # для проверки print $2,"\n"; } } else { print $res->status_line, "\n" } } # if } # while # складываем старый хеш и новый. %href = (%href, %new_href) } # выводим ключи хеша print join "\n", keys %href; =================== Это сообщение отредактировал(а) trigger - 20.9.2006, 17:12 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
вот тут глянь
![]() тока комменты убери http://forum.vingrad.ru/index.php?showtopi...st&p=815557
в общем.. много вариантов ;) |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Так что не работает то в том примере что ты привел?
Его проверял я, и человек которому я его сделал... все работает... но он собирает только ссылки, а не контент, Второе ссылки могут генерироваться JavaScript поэтому по ним так просто не пройдешься... давай сайт на котором тестировал... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
nitr подставил выдает вот это:
Use of uninitialized value in hash element at C:\t\scripts\files\link_graber.pl line 9. 8: my $hash; 9: $hash->{$_}++ while $content =~ m{<A[^>]*?HREF=["'](.+?)['"][^>]*?>.*?</A>}smig; это проход по ссылкам правильно понял? сайт как пример использовал http://www.gpr.com.ua. Я начал изучать перл под личный проект и в процессе того как будет собираться инфа по сайтам будут встречаться разные ссылки и поэтому хочу написать чтото простое, непривередливое и понятное (сам с себя улыбаюсь). Добавлено @ 18:30 Nab Can't locate object method "is_succes" via package "HTTP::Headers" (perhaps you forgot to load "HTTP::Headers"?) at (eval 19)[C:/usr/site/lib/HTTP/Message.pm:85] line 1. это выдало в вашем варианте подскажите в чем может быть проблема? HTTP::Headers - как положено есть Это сообщение отредактировал(а) trigger - 20.9.2006, 18:25 |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
а какая версия перла то у вас?
-------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
5.6.1
|
|||
|
||||
nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
работаить Добавлено @ 23:07 хошь в массив их... к примеру посл. строку поменять на
|
||||
|
|||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
В версии LWP::* которая идет с этим перлом реализован еще старый стиль, и запрос и ответ нужно создавать отдельно... Как его изменить смотрите как был сделан первый вариант diverd в том топике откуда вы этот пример утянули. -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
nitr Огромное спасибо
![]() если правильно понимаю :
данный пример проходит по ссылкам только на первой странице, получается теперь придеца взять каждый ключь объявленного хеша передать его как следующющий запрос и в ней собрать опять ссылки и там проверки на есть уже или нет такой ссылки - правильно мыслю ? Добавлено @ 11:44 Nab спасибо понял Это сообщение отредактировал(а) trigger - 21.9.2006, 11:43 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
да по всем ссылкам самому писать скрипт ;)
это несложно {"http://www.gpr.com.ua$1"}++ добавляем в хеш ![]() http://www.gpr.com.ua это для красоты ссылок ;) Это сообщение отредактировал(а) nitr - 21.9.2006, 11:52 |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Огромное Вам спасибо
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |