Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Преобразование относительных ссылок в абсолютные


Автор: Firer 3.11.2008, 15:32
Нужен Ваш профессиональный совет и ответ smile :
Нужно преобразовать html страничку (на моей машине) таким образом, чтобы все относительные ссылки в ней стали абсолютными
Очень бы хотелось разобраться как получить универсальный скрипт, изменяя опр. строки в котором можно получить решение проблемы для разных страниц в разных папках (хотя бы по одному за раз)
Я нашел скрипт на перле, но как им пользоваться не в курсе.
Выкладываю его, буду надеяться, что вы мне поможете с этим

Цитата

use strict;
  use warnings;
  use LWP 5.64;
  my $browser = LWP::UserAgent->new;

  my $url = 'http://freshair.npr.org/dayFA.cfm?todayDate=current';
  my $response = $browser->get($url);
  die "Can't get $url -- ", $response->status_line
   unless $response->is_success;

  my $html = $response->content;
  while( $html =~ m/<A HREF=\"(.*?)\"/g ) {
      print "$1\n";
  }




PS
И думаю будет верхом наглости если я попрошу скриптик, который позволит разбить исходный текст страницы типа: 

текст1 <a href=url 1> </p> текст2 <a href=url 2> </p>  ... </p> текстn <a href=url n> </p>
текст(n+1)<a href=url (n+1)> </p> текст(n+2) <a href=url (n+2)> </p>  ... </p> текст(n+m) <a href=url (n+m)> </p>

Самое смешное, что текст идет одной строкой (хотя это очень схематичное отображение)


Сразу огромное спасибо всем, кто прочитает и ответит

Автор: unicross 3.11.2008, 15:43
Код

use URI;
my $url = URI->new_abs(<Относительный адрес>, <Абсолютный адрес документа с ссылкой>);
my $url_abs = $url->as_string(); 


Извлечь из HTML-документа все ссылки позволяет модуль HTML::LinkExtor.

Автор: gcc 3.11.2008, 16:02
после слова 'PS' я ничего не понял...

Автор: Firer 3.11.2008, 17:09
Хорошо скрипт есть, как его использовать? Как его натравить на сохраненную страничку?
Нужно чтобы все осталось прежним только ссылки превратились в абсолютные


gcc, 
Цитата

И думаю будет верхом наглости если я попрошу скриптик, который позволит разбить исходный текст страницы типа: 
<body>
текст1 <a href=url 1> </p> текст2 <a href=url 2> </p>  ... </p> текстn <a href=url n> </p>
текст(n+1)<a href=url (n+1)> </p> текст(n+2) <a href=url (n+2)> </p>  ... </p> текст(n+m) <a href=url (n+m)> </p>
</body>


Так выглядит шаблон страницы в исходном коде html

Если несложно сделайте тоже такой скриптик, чтобы он как "структуризовал" страничку, а не делал ее одной строкой 

Автор: amg 5.11.2008, 10:58
Цитата(Firer @  3.11.2008,  17:09 Найти цитируемый пост)
Если несложно сделайте тоже такой скриптик, чтобы он как "структуризовал" страничку, а не делал ее одной строкой
Непонятны критерии "структуризованной" странички. Есть масса готовых решений привести html-код в читабельный вид. 

Но можно и по-простому, например, так:
Код

$html =~ s|(</p>)\s*|$1\n|g; # Каждая тэг </p> будет в конце строки


Автор: Firer 5.11.2008, 12:09
Огромное спасибо smile , но я лузер в перле.  smile Как натравить этот скрипт на страничку.
Если можно, то поподробнее

Автор: shamber 5.11.2008, 12:13
Firer, начните с чтения документации. Жизнь наладиться smile

Автор: tolkien 5.11.2008, 12:28
А вобще модерам пора сделать раздел специально для лузеров в перл. Пусть там флудят. Потому как нарпимер данная тема показывает что человек совершенно не знает перл и не хочет в нем разбираться. Ему только надо чтобы за него сделали.  

Автор: amg 5.11.2008, 12:37
Цитата(Firer @  5.11.2008,  12:09 Найти цитируемый пост)
Как натравить этот скрипт на страничку.
Простейший способ -- набрать в командной строке
perl -i -pe "s|(</p>)\s*|$1\n|g" file.html
file.html будет отредактирован

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)