2015-07-26 5 views
0

Как я могу сообщить "sanitize-html", чтобы фактически удалить теги html (сохранить только содержимое внутри)? в настоящее время, если, например, я установил его для хранения разделов div, на выходе он также пишет <div>some content</div> - я хочу только внутри ... ('some content')node.js sanitize html, а также удалять теги

, чтобы сделать его коротким - я не хочу теги, атрибуты и т. д. - только содержание этих элементов.

var Crawler = require("js-crawler"); 
    var download = require("url-download"); 
    var sanitizeHtml = require('sanitize-html'); 
    var util = require('util'); 
    var fs = require('fs'); 

    new Crawler().configure({depth: 1}) 
     .crawl("http://www.cnn.com", function onSuccess(page) { 

     var clean = sanitizeHtml(page.body,{ 
     allowedTags: [ 'p', 'em', 'strong','div' ], 
     }); 
     console.log(clean); 
     fs.writeFile('sanitized.txt', clean, function (err) { 
      if (err) throw err; 
      console.log('It\'s saved! in same location.'); 
     }); 

     console.log(util.inspect(clean, {showHidden: false, depth: null})); 
     var str = JSON.stringify(clean.toString()); 
     console.log(str); 
     /*download(page.url, './download') 
     .on('close', function() { 
      console.log('One file has been downloaded.'); 
     });*/ 
     }); 

ответ

7

Я автор sanitize-html.

Вы можете установить allowTags в пустой массив. sanitize-html не отбрасывает содержимое запрещенного тега, только сам тег (за исключением нескольких тегов, таких как «скрипт» и «стиль», для которых это не имеет смысла). В противном случае это было бы нецелесообразно по своей первоначальной намеченной цели, которая очищает разметку, скопированную и вставленную из текстовых процессоров и тому подобное, в текстовый редактор.

Однако, если у вас есть разметка, как:

<div>One</div><div>Two</div> 

Это выйдет как:

OneTwo

Чтобы обойти это, вы можете использовать опцию TextFilter, чтобы обеспечить текст за меткой всегда следует хотя бы одно пространство:

textFilter: function(text) { 
    return text + ' '; 
} 

Однако это w ill также вводят дополнительные пробелы в предложениях, которые содержат встроенные теги, такие как «strong» и «em».

Так, чем больше я думаю об этом, лучший ответ для вас, вероятно, совершенно другой модуль НПМ:

https://www.npmjs.com/package/html-to-text

Он широко используется и гораздо лучше подходит, чем ваш случай использования. sanitize-html действительно предназначен для ситуаций, когда вам нужны теги ... просто не теги.

+0

спасибо, оцените! – user1025852

+0

Спасибо. Вот ссылка для справки в будущем: https://github.com/punkave/sanitize-html – Wtower

Смежные вопросы