Javascript 如何使用x射线清除格式错误的HTML代码

Javascript 如何使用x射线清除格式错误的HTML代码,javascript,node.js,web-scraping,x-ray,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"

我第一次使用x光模块

我使用它没有问题,但是当我试图在一个格式错误的HTML代码中刮取数据时,我遇到了一些问题

例如,如果我试图从网站上删除此HTML代码:

<div class="item">
<dl class="list">
    <dd id="1"> Data1
    <dd id="2"> Data2
    <dd id="3"> Data3
</dl>
我得到以下结果:

[
      {
                "tags": "Data1 Data2 Data3"
      }
]

如果DD标签关闭,我的刮码就可以工作

[
      {
                "tags": "Data1"
      }
]

有没有解决这个问题的方法?

如果将来有人遇到同样的问题,这里是我自己的解决方法

我只是使用HTMLIDY模块

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

我认为,如果X-Ray库无法处理必要的HTML,唯一的解决方案将是尝试另一个库,或者在通过其他库将HTML交给X-Ray之前对其进行整理(“整理”等)。顺便问一句,您是否使用PhantomJS transport?PhantomJS应该能够毫无问题地处理此类HTML。您好@AndrewDunai,谢谢您的帮助。现在,我不使用PhantomJS。但是我会尝试这个模块,也许它会有帮助:)再次感谢
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);
    })
});