解析HTML / xhtml中的RDFa?
在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.html
use 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树。
该页面是非常无效的XHTML,但我仍然期望HTML解析器能够做出合理的工作。 我已经为您提交了一份错误报告。
同时,解决方法可能是在RDF :: RDFa :: Parser之外构建XML :: LibXML DOM树(也许使用libxml的内置HTML解析器?)。 您可以直接将该树传递给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 => @_ );
}
链接地址: http://www.djcxy.com/p/15709.html
上一篇: Parsing RDFa in html/xhtml?
下一篇: shadow not working