当前位置: 首页 > 知识库问答 >
问题:

在html/xhtml中解析RDFa?

米俊喆
2023-03-14

使用perl中的RDF::RDFa::解析器模块解析网站中的rdf数据。在网站上与!DOCTYPE超文本标记语言PUBLIC"-//W3C//DTD超文本标记语言4.01过渡//EN"

测试网站-

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');

共有1个答案

严宸
2023-03-14

(我是RDF::RDFa::Parser的作者。)

RDFa解析器使用的超文本标记语言解析器似乎在该页面上失败。(我也是超文本标记语言解析器的维护者,所以我不能把责任推给任何人!)因此,当RDFa解析开始时,它只看到一个空的DOM树。

这个页面是非常可怕的无效XHTML,但我仍然期望超文本标记语言解析器能做一个合理的工作。我已经为你提交了一份错误报告。

同时,一种解决方法可能是在RDF::RDFa::解析器之外构建XML::LibXML DOM树(也许使用libxml的内置超文本标记语言解析器?)。您可以将该树直接传递给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 => @_ );
}
 类似资料:
  • 我试图在这里使用JSOUP解析html标记。我对jsoup是新来的。基本上,我需要解析这些标记,获取这些标记中的文本,并应用class属性中提到的样式。 我正在创建一个SpannableStringBuilder,它可以创建子字符串,应用样式,并将它们附加到没有样式的文本中。 我不确定如何解析不在任何标记之间的字符串,例如“there are”和“worker from the”。 需要输出,例如

  • 问题内容: 我试图解析具有声明为使用过渡性dtd的doctype的HTML文档,如下所示: <!DOCTYPE html PUBLIC“-// W3C // DTD XHTML 1.0 Transitional // EN”“ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ”> 在文档上执行Builder.build时,出现以下异常

  • 问题内容: 我知道我们可以使用PHP DOM 来使用PHP解析HTML。我也在堆栈溢出中发现了很多问题。但是我有一个特定的要求。我有如下的HTML内容 我想解析以上HTML并将内容保存到两个不同的数组中,例如: 和 我可以简单地使用jQuery来实现。但是我不确定这是否正确。如果有人能指出我正确的方向,那就太好了。提前致谢。 问题答案: 尝试查看PHP简单HTML DOM解析器 它具有类似于jQu

  • HTML5 Boilerplate 默认提供两个 html 页面: index.html 404.html index.html no-js类 no-js 类可以让开发者依据 JavaScript 被启用(.js)或被禁止(.no-js)两种状态,更轻易准确地添加自定义样式。 使用这个技巧也有助于避免浏览器闪烁(FOUC)。 lang 属性 请认真考虑在 <html> 中添加 lang 属性,从而

  • 本文向大家介绍HTML 5与XHTML 1.0 Transitional,包括了HTML 5与XHTML 1.0 Transitional的使用技巧和注意事项,需要的朋友参考一下 HTML表示为SGML,XHTML表示为XML。创建XHTML具有更多的标记形式的限制。 避免在XHTML 1.0 Transitional中使用<video>或<audio>标记,因为它们不是该规范的元素。 从HTML

  • Flask 文档和示例应用使用 HTML5 。你可能会注意到,在许多情况下当结束标签 是可选的时候,并不使用它们,这样 HTML 会更简洁且加载更迅速。因为在开发者 中,关于 HTML 和 XHTML 有许多混淆,本文档试图回答一些主要的疑问。 XHTML 的历史 一段时间, XHTML 的出现欲取代 HTML 。然而,Internet 上几乎没有任何实 际的 XHTML (用 XML 规则处理的