Получение названия сайта по ссылке в строке - PullRequest
2 голосов
/ 04 апреля 2011

строка: «Вот значки, https://stackoverflow.com/badges бла бла бла»

Если строка содержит ссылку (см. Выше), я хочу проанализировать заголовок веб-сайта этой ссылки.

Должно возвращаться: Значки - переполнение стека.

Как я могу это сделать?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 04 апреля 2011

Я использую URI :: Find :: Simple для метода list_uris и URI :: Title для этого.

6 голосов
/ 04 апреля 2011
#!/usr/bin/perl -w

require LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

my $response = $ua->get('http://search.cpan.org/');

if ($response->is_success) {
    print $response->title();
}
else {
    die $response->status_line;
}

См. LWP :: UserAgent .Приветствия: -)

1 голос
/ 04 апреля 2011

В зависимости от того, как дана ссылка и как вы определяете заголовок, вам нужен тот или иной подход.

В точном сценарии, который вы представили, получите URL с URI::Find, HTML::LinkExtractor и т. Д., А затем my $title=URI->new($link)->path() обеспечит заголовок и ссылка.

Но если заголовок веб-сайта представляет собой связанный текст, такой как <a href="https://stackoverflow.com/badges"> badged</a>, то Как извлечь URL и текст ссылки из HTML в Perl? даст вам ответ.

Если заголовок закодирован в самой ссылке, а ссылка - это сам текст ссылки, как вы определяете заголовок?

  1. Хотите ли вы последний бит URI перед любым запросом? Что происходит с запросами, заданными как URL-пути?
  2. Требуется ли раздел между хостом и запросом?
  3. Хотите проанализировать источник ссылки и получить тег заголовка, если таковой имеется?

Как всегда, переход от тривиальной первой реализации ко всем угловым случаям - непростая задача; -)

...