XML::LibXML обрабатывает символы, закодированные в gbk

Следующий скрипт на 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";
    }
}

0 ответов

Другие вопросы по тегам