使用请求包在 nodejs 中抓取和解析 html 的最佳方法

Best way to scrape and parse html in nodejs with request package

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

与 https.request 相比,返回的字符串不一样,明智地换行。我正在抓取一个人类可读的页面,并且 http.request 处理程序能够聚合数据以在输出方面匹配服务器响应。

但是 request.get 我收到了没有换行符的回复。 因此我只能假设我没有使用 requestjs 不支持的解析包,并导致问题:

实际解析从 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 );