【发布时间】:2011-07-28 19:16:26
【问题描述】:
string: "这是徽章,https://stackoverflow.com/badges bla bla bla"
如果字符串包含一个链接(见上文),我想解析该链接的网站标题。
它应该返回:徽章 - 堆栈溢出。
我该怎么做?
谢谢。
【问题讨论】:
标签: regex perl html-parsing
string: "这是徽章,https://stackoverflow.com/badges bla bla bla"
如果字符串包含一个链接(见上文),我想解析该链接的网站标题。
它应该返回:徽章 - 堆栈溢出。
我该怎么做?
谢谢。
【问题讨论】:
标签: regex perl html-parsing
根据给出链接的方式和定义标题的方式,您需要一种或其他方法。
在您提供的确切场景中,使用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?会给你答案。
如果标题编码在链接本身,而链接是链接的文本本身,那么如何定义标题?
从琐碎的第一个实现到涵盖所有极端情况总是一项艰巨的任务;-)
【讨论】:
#!/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。干杯:-)
【讨论】:
$str =~ m{(?<url>http://\S*)};
use 而不是require,因为use 是在编译时评估的; require 在运行时评估。
我为此使用URI::Find::Simple 的list_uris 方法和URI::Title。
【讨论】: