删除网络抓取的空白标签nodejs
问题描述:
我有一个问题,超出了我的解决。我正在网页上抓取一个更具体的网页 - <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());
});
})
答
我认为你缺少更换使用空格作为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
我有一个问题,超出了我的解决。我正在网页上抓取一个更具体的网页 - <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());
});
})
我认为你缺少更换使用空格作为Regex to replace multiple spaces with a single space建议的副本:
string = string.replace(/\s\s+/g, ' ');
见sample为使用jQuery一个简化版本。
谢谢.......这解决了这个问题。现在 –
我使用了一个类似的代码,它并没有做我认为它应该做的事情sa.replace(/(\ r \ n | \ n | \ r)/ gm,“”)。我没有得到与你发布的结果相同的结果。 –
\ s将删除所有空格。 您使用的网站有很多空格,不仅有回车符和换行符(\ r \ n),您似乎要删除它们。 – Dror
您能否添加要浏览的页面? – Dror
它是在代码(URL) –
你用'替换'\ \删除空格?请参阅http://stackoverflow.com/questions/1981349/regex-to-replace-multiple-spaces-with-a-single-space – Dror