我注意到,在实验期间,我无法使用htmlparser或htmlparser2包解析从request.get接收的文本。

与https.request相比,返回的字符串不同,换行是明智的。我正在整理一个易于阅读的页面,并且http.request处理程序能够聚合数据以匹配服务器在输出方面的响应。

但是通过request.get,我收到的响应没有换行符。
因此,我只能假定我没有使用request.js不支持的解析包,并引发了以下问题:

实际解析从reqeust.get和requst.post调用接收的HTML的最佳方法是什么?

谢谢。

最佳答案

抱歉,我使用响应而不是身体,这是正确的方法:

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 );

关于node.js - 使用请求包在Node.js中抓取和解析html的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32383005/

10-16 17:57