以下perl脚本有效。但是,如果HTML内容具有一些基于gbk的字符,则它们将无法提取URL。
例如,此网站“http://list.jd.com/6196-6198-6209-0-0-0-0-0-0-0-1-3-1-1-1-72-4137-0.html”包含一些gbk字符。
有关如何使其适用于所有网站的任何想法?感谢。
use XML::LibXML;
use AnyEvent::HTTP;
$cv = AnyEvent->condvar;
http_get("http://www.yahoo.com", sub {
printf("resp %d bytes\n", length($_[0]));
myparse($_[0]);
});
$cv->recv;
sub myparse {
my $parser = XML::LibXML->new(recover => 2);
my $doc = $parser->load_html(string => $_[0]);
for $e ( $doc->findnodes('//a/@href')->get_nodelist ) {
print $e->getValue(), "\n";
}
}