2015-09-03 6 views
1

В ходе моего эксперимента я понял, что не могу разобрать текст, полученный от request.get, с помощью пакетов htmlparser или htmlparser2.Лучший способ очистить и разобрать html в nodejs с пакетом запросов

По сравнению с https.request возвращаемая строка не является той же, разрывы строк мудры. Я надавливаю на удобочитаемую страницу, и обработчик http.request способен агрегировать данные в соответствии с ответом сервера в терминах вывода.

Но с request.get Я получаю ответ без перерывов. Поэтому я могу только предположить, что я не использую пакет синтаксического анализа, который не поддерживается requestjs, и я поставил вопрос:

Каков наилучший способ проанализировать HTML-код, полученный из reqeust.get и requst. почтовые звонки?

Thank you.

ответ

1

Мои извинения, я использовал ответ вместо тела, вот правильный способ:

var request = require('request'); 
var htmlparser = require('htmlparser2'); 
var select = require('soupselect').select 

var url = ''; 


function httpsHandler(err, response, body) { 
    if(err){ 
     console.error('to err is human') 
     process.exit(1); 
    } 

    var parser = new htmlparser.Parser(htmlHandler); 
    parser.parseComplete(body); 
} 


var htmlHandler = new htmlparser.DefaultHandler((error, dom) => { 
    if (error){ 
    console.log('error', error); 
    process.exit(1); 
    } 
    var options = extractData(dom); 
}); 


function extractData(dom){ 

    var collection = select(dom, '#ctl00_LeftColumnMiddle_Table1 table td'); 

    collection.forEach((licenses) => { 
    licenses.children.forEach((license, i) => { 
     var data = (license.data ) ? license.data : license.children[0].data 
     console.log(data); 
    }); 
    }) 
} 

//entry point 
request.get(url , httpsHandler);