Javascript 如何使用x射线清除格式错误的HTML代码
我第一次使用x光模块 我使用它没有问题,但是当我试图在一个格式错误的HTML代码中刮取数据时,我遇到了一些问题 例如,如果我试图从网站上删除此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"
<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);
})
});