2011-04-03 60 views

回答

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。干杯:-)

+0

谢谢你,真棒,但我需要赶上链接:)不是我能定义。如果字符串包含链接,那么我需要获取它的标题。 :) – wonnie 2011-04-03 21:27:01

+0

这里有更好的正则表达式,但是这里有一个简单的,**有缺陷的**例子:'$ str =〜m {(? http:// \ S *)};' – nc3b 2011-04-03 21:47:16

+0

我更喜欢'use ''而不是'require',因为'use'在编译时被评估; 'require'在运行时进行评估。 – 2014-12-01 23:14:23

1

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

在您提交的确切场景中,获取带有URI::Find,HTML::LinkExtractor等的URL,然后使用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. 你想解析链接源并检索标题标签吗?

与往常一样,从微不足道的首次实施将覆盖所有角落的情况是一项艰巨的任务;-)