如何使用X射线废弃格式错误的HTML代码

时间:2016-04-19 09:02:13

标签: javascript node.js web-scraping x-ray

我是第一次使用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"
      }
]

有关如何解决此问题的任何解决方案?

1 个答案:

答案 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代码不再是问题。