Что я получаю путем пропущения URL через модуль URI Perl?

Сделайте я получаю что-то, когда я преобразовываю мой $url как это: $url = URI->new( $url )?

#!/usr/bin/env perl
use warnings; use strict;
use 5.012;
use URI;
use XML::LibXML;

my $url = 'http://stackoverflow.com/';
$url = URI->new( $url );

my $doc = XML::LibXML->load_html( location => $url, recover => 2 );
my @nodes = $doc->getElementsByTagName( 'a' );
say scalar @nodes;
5
задан brian d foy 26 April 2010 в 19:03
поделиться

3 ответа

Конструктор модуля URI очистит URI за вас - например, правильно экранирует символы, недопустимые для URI конструкция (см. URI :: Escape ).

4
ответ дан 14 December 2019 в 04:33
поделиться

Модуль URI дает несколько преимуществ:

  • Он нормализует URL-адрес для вас
  • Он может разрешать относительные URL-адреса
  • Он может обнаруживать недопустимые URL-адреса (хотя вам необходимо отключить биты без схемы)
  • . Вы можете легко фильтровать URL-адреса, которые хотите обработать.

Преимущество, которое вы получаете от небольшого фрагмента кода, который вы показываете, минимально, но по мере того, как вы продолжаете работать над проблемой, возможно, просматривая сайт, URI становится более удобным, когда вы выбираете, что делать дальше.

3
ответ дан 14 December 2019 в 04:33
поделиться

Я удивлен, что никто об этом еще не упомянул, но $ url = URI-> new ($ url); не очищает ваш $ url и не возвращает его обратно для вас он создает новый объект класса URI (или, скорее, одного, если его подклассы), который затем может быть передан другому коду, которому требуется объект URI . В данном случае это не особенно важно, поскольку XML :: LibXML , похоже, с радостью принимает местоположения в виде строк или объектов, но некоторые другие модули требуют, чтобы вы предоставили им объект URI и отклонит URL-адреса, представленные в виде простых строк.

1
ответ дан 14 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: