![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Гость_s_a_s_h_a |
|
|||
Unregistered |
Люди, расскажите, пожалуйста, как использовать модуль HTML::Parser для анализа HTML-кода.
Я смотрел документацию на http://search.cpan.org , но с моим очень плохим знанием англицкого ничего не понял, и экзамплы - единственное мое спасение - тоже не понял. Мне надо получить информацию об имеющихся в HTML-документе формах, а именно name and action формы, списки input'ов, их types, names and values, а также аналогичную инфоррмацию об select'ах, textarea и т.п. Всем, принявшим участие в развитии этой темы, заранее говорю спасибо. |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
что нужно конкретно ?
Добавлено @ 08:41 вот тут снаяала посморите ... если не поможет то сюда ... http://www.foo.be/docs/tpj/issues/vol5_1/tpj0501-0003.html -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Посмотрел. Не помогло. Конкретно мне нужно следующее.
У меня есть строка, содержащая код HTML-страницы. Надо получить информацию о каждой форме на этой странице, т.е.: форма 1 name="name" action="url" input type="type_1" name="name_1" value="value_1" input type="type_2" name="name_2" value="value_2" select name="name" option_1 option_2 .......... textarea name="name" форма 2 name action ............... |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
А самому руками разобрать при помощи регекспов?
|
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Я извращенец в программировании, поэтому лучше использовать то, что сделали более опытные люди. Как-то давно уже пытался это сделать и ничего не получилось. Хотя... надо покопаться в архивах. Кажется я понял как это сделать. Но все равно. Как все-таки использовать этот модуль. Привидите код, пожалуйста, на каком-нибудь маленьком примере с реальными данными (в том смысле, что не так
$p = HTML::Parser->new( api_version => 3, start_h => [\&start, "tagname, attr"], end_h => [\&end, "tagname"], marked_sections => 1, ); где не понятно, что можно подставить и куда и как потом это использовать). |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
-------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
Если нужно парсить какой-то один файл или сайт, который изменяться не будет, то логичнее написать регексп. Будет быстрее и надёжнее.
Если нужно парсить разные сайты, формат которых неизвстен, то лучше использовать готовый модуль. |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
Надежнее не факт что будет (это обуславливается не строгостью формата HTML )
.... и тем более не факт что быстрее ... (тем что регекспы работающие быстро еще надо научиться писать ) -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Парсить нужно разные сайты, формат которых неизвестен.
Спасибо за ссылку. Правда я ее уже видел. У меня маленький стаж программирования и поэтому есть некоторые трудности. В данном случае возникли следующие вопросы: package ParseForm; use strict; use vars qw(@ISA $inrecord $inform); @ISA = qw(HTML::Parser); require HTML::Parser; Что должны содержать переменные $inrecord $inform. И что именно делает эта часть кода. use HTML::Parser; $p = HTML::Parser -> new(); Это мне понятно, а то что выше нет. Я также не понял, где вызываются процедуры start() and end(), а также почему в одном скрипте встречается два раза строка #!/usr/bin/perl -w |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
я тоже посмотрел эту статью ....руки оторвать тому кто её писал...
посмотрите HTML::TokeParser он более простой ... -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Спасибо за солидарность. Мало кто умеет доходчиво написать для ламеров и юзеров, а методом тыка иногда надоедает действовать.
|
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
вот маленький примерчик набросал посмотрите
-------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
Посмотрел код. Ругается:
Can't call method "get_tag" on an undefined value at while (my $token = $p->get_tag("form")) а также на строки while (my $token = $p->get_tag("a")) while (my $token = $p->get_tag("title")) и другие. |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
а вы как вызывали ?
Добавлено @ 12:06 надо еще файл на вход -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
Гость_s_a_s_h_a |
|
|||
Unregistered |
пример из мана:
use HTML::TokeParser; $p = HTML::TokeParser->new($STR1); if ($p->get_tag("title")) { my $title = $p->get_trimmed_text; print "Title: $title\n"; } $STR1 получаю из запроса к удаленному скрипту. Проверял - она содержит HTML-код |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |