![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
achmed |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
см.
perldoc HTML::Parser там все понятно описано, с примерами |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Нашел bug - если передаем строку для парсинга то надо поставить перед перед переменной \
use HTML::TokeParser; $p = HTML::TokeParser->new(\$STR1); if ($p->get_tag("title")) { my $title = $p->get_trimmed_text; print "Title: $title\n"; } |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
мой пример заработал у Вас ?
-------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Програ которую написал ElectricalStorm прекрасно работает только при вызове необходимо передать имя нужного html файла или в текущем каталоге должен быть файл с именем index.thml.
Вызывай примерно так: C:\>perl myparser.pl home.html Удачи. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
ElectricalStorm, не совсем. Если в документе больше одной формы, то он [скрипт] выдает, информацию о всех инпутах, но только об одном теге <form> - первом. Сейчас работаю над этой траблой. А ведь еще надо собрать инфу об опшинах тега <select>. Но главное начать. Спасибо, с вашей помощью у меня это получилось. |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
вообщем то понятно почему она так делает ...
вложеным вайлом доходит до конца файла .... начиная с первого тега form -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Это и мне понятно. Я уже немного модифицировал этот алгоритм. Теперь надо то что получилось в кучу собрать.
sub dumpHash { my $h = shift; print $_." => ".$h->{$_},"<br>" for (keys %{$h}); } use HTML::TokeParser; $p = HTML::TokeParser->new(\$STR1); my @tags= ("form","input","select","/select","texterea","/textarea","/form"); while (my $input_token = $p->get_tag(@tags)) { print $input_token->[0] , "<br>"; for (@$input_token) { if (ref eq "HASH" ) { dumpHash($_); print "<br>"; } } } |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
видите как легко получилось ....
а дальшле уже можно хоть чего с ним делать .... остальное можно без помощи модуля...
Это сообщение отредактировал(а) ElectricalStorm - 6.8.2004, 17:13 -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Проблемы продолжаются. Теперь столкнулся со следующим недоразумением. Мне надо получить значение опшинов внутри тега <select>, используя функции get_text или get_trimmed_text, я их получаю, но они никак не разделены. Как это обойти. Вот кусок скрипта.
use HTML::TokeParser; $p = HTML::TokeParser->new(\$STR1); my @tags=("form","input","select","/select","texterea","/textarea","/form"); while (my $input_token = $p->get_tag(@tags)) { if($input_token->[0] eq 'select') { $str = $p->get_trimmed_text("/select"); #получили строку с значениями опшинов никак не разделенными. } } аналогичный результат, если $str = $p->get_text("/select"); и совсем пусто если $str = $p->get_trimmed_text; или $str = $p->get_text; Если кто-то что-то понял, помогите, пожалуйста. |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Меня осенило и я сделал это сам.
my @tags=("form","input","select","option","/select","texterea","/textarea","/form"); my $str2=""; while (my $input_token = $p->get_tag(@tags)) { if($input_token->[0] eq 'select') { $str2="";} if($input_token->[0] eq 'option') { my $str1 = $p->get_text; $str2=$str2.":::".$str1; } } |
|||
|
||||
aleksnn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 27.4.2005 Репутация: нет Всего: 2 |
Из google часто попадал сюда - учась парсить.
Теперь знаю как и скажу другим ![]() Делается так: use HTML::Parser; $parser = HTML::Parser->new(api_version => 3); $parser ->handler(default => \&link_ext, 'tagname,text'); $parser->parse($html); # $html ваш файл sub link_ext{ my ($tag, $text) = @_; return if $tag eq ""; print "$tag => $text \n"; } см perldoc HTML::Parser для просвещения. |
|||
|
||||
player943 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 22.11.2006 Где: Самара Репутация: нет Всего: нет |
Граждане, раз уж есть такая тема то помогите с программой.
Сразу: rtfm читал. Суть: надо используя HTML::TokeParser рассчитать частоту слов и фраз из двух-трех слов, исключая предлоги и знаки припинания, а также HTML теги и код JavaScript. Вопрос: нужно перебирать все возможные тэги html или как просче ? |
|||
|
||||
Zukoff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 25.6.2006 Репутация: нет Всего: нет |
Саша, ті решил заспамить гостевые книги?
![]() лучше купи спамилку за 50 баксов |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 12 Всего: 84 |
Ребят... тема 2006 года... давайте не флудить... и тем более оффтопить...
|
|||
|
||||
aleksnn |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 27.4.2005 Репутация: нет Всего: 2 |
Это вопрос ко мне? ![]() Сейчас скажу, что я тогда делал. Я писал многопоточный менеджер закачек, висящий на сервере, который проходя по указанному сайту находил картинки, закачивал на сервер, пережимал размер, скдадывал результирующее изображение на другой хост по фтп, и высылал отчёт на емейл в архивированном виде. Частично я сего монстра написал и раза три использовал ![]() И чтобы сильно не офтопить отвечу на вопрос player943 как просче Я когда-то подсчитывал количество полезных символов на странице примерно так Открыл исходный текст нашёл там теги начала и конца полезного текста Для этой страницы это
сохранил страницу как index.htm. запускаю такой код
который выдаёт мне десять строк полезных слов ![]() |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |