我是第一次使用X射线模块。
我使用它没有问题但是当我尝试在格式错误的HTML代码中废弃数据时出现问题。
例如,如果我尝试从网站中删除此HTML代码:
<div class="item">
<dl class="list">
<dd id="1"> Data1
<dd id="2"> Data2
<dd id="3"> Data3
</dl>
使用此代码:
x(html, '.item', [{
tags: x('.item', 'dd:nth-child(1)')
}])
(function(err, obj) {
var jsonCleaned = JSON.parse(JSON.stringify(obj).replace(/"\s+|\s+"/g,'"').replace(/\\n/g, ''))
res.json(jsonCleaned);
})
我得到以下结果:
[
{
"tags": "Data1 Data2 Data3"
}
如果DD标签已关闭,我的抓取代码就可以使用。
[
{
"tags": "Data1"
}
]
有关如何解决此问题的任何解决方案?
答案 0 :(得分:0)
如果有人在将来遇到同样的问题,这是我自己的解决方案。
我只使用htmltidy模块。
tidy(html, function (err, html) {
x(html, '.item', [{
tags: x('.item', 'dd:nth-child(1)')
}])
(function(err, obj) {
var jsonCleaned = JSON.parse(JSON.stringify(obj).replace(/"\s+|\s+"/g,'"').replace(/\\n/g, ''));
res.json(jsonCleaned);
})
});
之后,格式错误的HTML代码不再是问题。