Реализация универсального веб-скребка с использованием Node.js

Ниже приведен короткий гибкий фрагмент, который преобразует строку datetime в безопасном для кросс-браузера стиле, как nicel, подробно описанный @ drankin2112.

var inputTimestamp = "2014-04-29 13:00:15"; //example

var partsTimestamp = inputTimestamp.split(/[ \/:-]/g);
if(partsTimestamp.length < 6) {
    partsTimestamp = partsTimestamp.concat(['00', '00', '00'].slice(0, 6 - partsTimestamp.length));
}
//if your string-format is something like '7/02/2014'...
//use: var tstring = partsTimestamp.slice(0, 3).reverse().join('-');
var tstring = partsTimestamp.slice(0, 3).join('-');
tstring += 'T' + partsTimestamp.slice(3).join(':') + 'Z'; //configure as needed
var timestamp = Date.parse(tstring);

Ваш браузер должен предоставить тот же результат временной метки, что и Date.parse с:

(new Date(tstring)).getTime()
1
задан Zugdud 15 January 2019 в 15:29
поделиться

2 ответа

Я считаю, что cherio.load (тело) дает вам DOM. Если это так, вы можете использовать innerText примерно так:

    // Parse the document body
    var $ = cheerio.load(body);
    console.log($('body').innerText);

Если cherio предоставляет вам HTML, вы можете преобразовать его в DOM с помощью JSDOM примерно так: :

    // Parse the document body
    const jsdom = require(jsdom);
    const dom = jsdom.JSDOM(cheerio.load(body),{"url": pageToVisit}).window.document.body;
    console.log(dom.innerText);
0
ответ дан bristweb 15 January 2019 в 15:29
поделиться

, глядя на другие ответы, которые я видел, что вы можете использовать регулярные выражения для этого, вот пример:

let scriptRegex = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
let styleRegex = /((<style>)|(<style type=.+))((\s+)|(\S+)|(\r+)|(\n+))(.+)((\s+)|(\S+)|(\r+)|(\n+))(<\/style>)/g;

// An example html content
const str = `
my cool html content
<style>
...
</style>
my cool html content
<style type="text/css">
...
</style>
my cool html content
<script> 
... 
</script>
my cool html content`;

// Strip the tags from the html
let result = str.replace(scriptRegex, '');
result = result.replace(styleRegex, '');

// There you go :)
console.log('Substitution result: ', result);

Надеюсь, это поможет!

0
ответ дан Silvio Biasiol 15 January 2019 в 15:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: