使用perl中的rdf::rdfa::parser模块解析网站外的rdf数据。在网站上与!doctype html public“-//w3c//dtd html 4.01 transitional//en”>它可以工作,但是在使用xhtml的站点上!doctype html public“-//w3c//dtd xhtml 1.0 transitional//en”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>无输出…测试网站->http://www.filmstarts.de/kritiken/186918.htmluse RDF::RDFa::Parser;my $url = 'http://www.filmstarts.de/kritiken/186918.html';my $options = RDF::RDFa::Parser::Config->tagsoup;my $rdfa = RDF::RDFa::Parser->new_from_url($url, $options);print $rdfa->opengraph('image');print $rdfa->opengraph('description'); 最佳答案 (我是rdf::rdfa::parser的作者。)看起来rdfa解析器使用的html解析器在该页面上失败了。(我也是HTML解析器的维护者,所以我不能把责任推给其他人!)因此,当rdfa解析开始时,它看到的只是一个空的dom树。页面是quite hideously invalid XHTML的,但我仍然希望html解析器做一个合理的工作。我有。同时,解决方法可能是在rdf::rdf a::parser之外构建xml::libxml dom树(可能使用libxml的内置html parser?)。您可以将该树直接传递给rdfa解析器:use RDF::RDFa::Parser;use LWP::Simple qw(get);my $url = 'http://www.filmstarts.de/kritiken/186918.html';my $xhtml = get($url);my $dom = somehow_build_a_dom_tree($xhtml); # hand-waving!!my $options = RDF::RDFa::Parser::Config->tagsoup;my $rdfa = RDF::RDFa::Parser->new($dom, $url, $options);print $rdfa->opengraph('image');print $rdfa->opengraph('description');我希望这能有帮助!更新:这里有一个somehow_build_a_dom_tree的可能实现…sub somehow_build_a_dom_tree { my $p = XML::LibXML->new; $p->recover_silently(1); $p->load_html( string => @_ );}关于html - 在html/xhtml中解析RDFa?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20767903/
10-12 06:22