gpt4 book ai didi

node.js - 用node.js解析奇怪的html

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:05 26 4
gpt4 key购买 nike

我正在尝试解析一个网站,但 html 很乱。有更多解析网站经验的人可以帮助我吗?

<tr>
<td><font FACE=Tahoma color='#CC0000' size=2><b>Date</b></font></td>
<td><font FACE=Tahoma color='#CC0000' size=2><b>Place</b></font></td>
<td><font FACE=Tahoma color='#CC0000' size=2><b>Situation</b></font></td>
</tr>

<tr><td rowspan=2>16/09/2011 10:11</td><td>New York</td><td><FONT COLOR="000000">Situation Red</font></td></tr>
<tr><td colspan=2>Optional comment hello new york</td></tr>
<tr><td rowspan=2>16/09/2011 10:08</td><td>Texas</td><td><FONT COLOR="000000">Situation Green</font></td></tr>
<tr><td colspan=2>Optional comment hello texas </td></tr>
<tr><td rowspan=1>06/09/2011 13:14</td><td>California</td><td><FONT COLOR="000000">Yellow Situation</font></td></tr>
</TABLE>

一件奇怪而疯狂的事情是评论不在表头,起点(加利福尼亚州)也没有评论。所以,起点总是这样的:

日期:2011年6月9日13:14

地点:加利福尼亚州

情况:黄色情况

评论:空

所有其他地方都有评论,如下所示:

日期:2011年9月16日10:11

地点:纽约

情况:情况红色

评论:可选评论你好纽约。

我尝试过一些方法,但我对node.js没有太多经验,对HTML解析也没有太多经验。我需要开始解析疯狂的东西。

最佳答案

我在 Node.js 中构建了一个分布式抓取工具。我发现通过 html tidy 解析过的 html 更容易解析。

这是一个通过 tidy 运行 html 的模块:

var spawn = require('child_process').spawn;
var fs = require('fs');

var tidy = (function() {
this.html = function(str, callback) {
var buffer = '';
var error = '';

if (!callback) {
throw new Error('No callback provided for tidy.html');
}
var ptidy = spawn(
'tidy',
[
'--quiet',
'y',
'--force-output',
'y',
'--bare',
'y',
'--break-before-br',
'y',
'--hide-comments',
'y',
'--output-xhtml',
'y',
'--fix-uri',
'y',
'--wrap',
'0'
]);

ptidy.stdout.on('data', function (data) {
buffer += data;
});

ptidy.stderr.on('data', function (data) {
error += data;
});

ptidy.on('exit', function (code) {
//fs.writeFileSync('last_tidy.html', buffer, 'binary');
callback(buffer);
});

ptidy.stdin.write(str);
ptidy.stdin.end();
}
return this;
})();

module.exports = tidy;

示例(如果保存为 tidy.js):

require('./tidy.js');
tidy.html('<table><tr><td>badly formatted html</tr>', function(html) { console.log(html); });

结果:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org" />
<title></title>
</head>
<body>
<table>
<tr>
<td>badly formatted html</td>
</tr>
</table>
</body>
</html>

关于node.js - 用node.js解析奇怪的html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031369/

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