从字符串中的链接获取网站标题

时间:2011-04-03 21:14:58

标签: regex perl html-parsing

字符串:“这是徽章,https://stackoverflow.com/badges bla bla bla”

如果string contatins一个链接(见上文),我想解析该链接的网站标题。

它应该返回:徽章 - 堆栈溢出。

我该怎么做?

感谢。

3 个答案:

答案 0 :(得分:6)

#!/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 :(得分:6)

我使用URI::Find::Simple的list_uris方法和URI::Title

答案 2 :(得分:1)

根据链接的给定方式以及如何定义标题,您需要一种或另一种方法。

在您提供的确切方案中,使用URI::FindHTML::LinkExtractor等,然后my $title=URI->new($link)->path()获取网址将提供标题和链接。

但如果网站标题是<a href="https://stackoverflow.com/badges"> badged</a>之类的链接文字,那么How can I extract URL and link text from HTML in Perl?会给你答案。

如果标题是在链接本身编码而链接是链接的文本本身,那么如何定义标题?

  1. 在任何查询之前,您想要URI的最后一位吗?设置为URL路径的查询会发生什么?
  2. 您想要主机和查询之间的部分吗?
  3. 您是否要解析链接源并检索标题标记(如果有)?
  4. 总是从琐碎的第一次实施到覆盖所有角落的情况是一项艰巨的任务; - )