2016-10-11 25 views
0

我有一个问题,超出了我的解决。我正在网页上抓取一个更具体的网页 - <tr>在nodejs中,我能够抓取内容,但由于某种原因,格式不理想。在console.log()中查看时,它有一堆空格。我尝试了.trim()和.replace(),但它并没有真正删除空格。我猜这是因为数据嵌套在div和table格式中。我不知道如何处理它。删除网络抓取的空白<tr>标签nodejs

另外我试着将它保存为数组,但所有的输出没有被打破,它只是一个数据块。如果已经回答了这个问题,请提供链接并忽略我的帖子。

下面是代码

var request = require('request'); 
var cheerio = require('cheerio'); 
var URL = 'http://www.hcad.org'; 

var content = []; 
var Tr = []; 
request(URL, function(error, response,html){ 
if(error){ 
    console.log('Error happened: ', error); 
} 
if (response.statusCode !== 200) { 
    console.log('Invaled response code returned: ', response.statusCode); 
} 
var $ = cheerio.load(html); 


$('tr').each(function (i, element) { 

    content = []; 
    var a = $(this).prev(); 
    var trimmed_a = a.text(); 

    trimmed_a = trimmed_a.trim(); 
    var str = trimmed_a.replace(/(\r\n|\n|\r|\t)/gm, " "); 
    var newStr = str.replace(/[^\x20-\x7E]/gmi, "");; 

    content.push(newStr.trim()); 
    console.log(newStr.trim()); 
}); 



}) 
+0

您能否添加要浏览的页面? – Dror

+0

它是在代码(URL) –

+0

你用'替换'\ \删除空格?请参阅http://stackoverflow.com/questions/1981349/regex-to-replace-multiple-spaces-with-a-single-space – Dror

回答

0

我认为你缺少更换使用空格作为Regex to replace multiple spaces with a single space建议的副本:

string = string.replace(/\s\s+/g, ' '); 

sample为使用jQuery一个简化版本。

+0

谢谢.......这解决了这个问题。现在 –

+0

我使用了一个类似的代码,它并没有做我认为它应该做的事情sa.replace(/(\ r \ n | \ n | \ r)/ gm,“”)。我没有得到与你发布的结果相同的结果。 –

+0

\ s将删除所有空格。 您使用的网站有很多空格,不仅有回车符和换行符(\ r \ n),您似乎要删除它们。 – Dror