gpt4 book ai didi

html - 你如何在 Perl 中处理格式错误的 HTML?

转载 作者:太空狗 更新时间:2023-10-29 15:26:33 27 4
gpt4 key购买 nike

我对一个解析器很感兴趣,它可以处理格式错误的 HTML 页面,并在对其执行一些 XPath 查询之前将其转换为格式良好的 HTML。你知道吗?

最佳答案

您不应该使用 XML 解析器来解析 HTML。使用 HTML 解析器。

请注意,以下是完全有效的 HTML(XML 解析器会阻塞它):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Is this valid?</title>
</head>

<body>

<p>This is a paragraph

<table>

<tr> <td>cell 1 <td>cell 2
<tr> <td>cell 3 <td>cell 4

</table>

</body>

</html>

CPAN 上有许多特定于任务(除了通用目的)的 HTML 解析器。他们在处理大量极其困惑(而且大部分时间无效)的 HTML 时为我提供了完美的解决方案。

如果您能具体说明您要解决的问题,就可以给出具体的建议。

还有HTML::TreeBuilder::XPath使用 HTML::Parser将文档解析为树,然后允许您使用 XPath 查询它。我从未使用过它,但看到 Randal Schwartz 的 HTML Scraping with XPath .

给定上面的 HTML 文件,下面的简短脚本:

#!/usr/bin/perl

use strict; use warnings;

use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;

$tree->parse_file("valid.html");
my @td = $tree->findnodes_as_strings('//td');

print $_, "\n" for @td;

输出:

C:\Temp> zcell 1cell 2cell 3cell 4

这里的关键点是文档被 HTML 解析器解析为 HTML 文档(尽管事实上我们能够使用 XPath 查询它)。

关于html - 你如何在 Perl 中处理格式错误的 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1633616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com