1

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

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

但是使用 request.get 我收到了没有换行符的响应。因此,我只能假设我没有使用 requestjs 不支持的解析包,因此我提出了以下问题:

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

谢谢你。

4

1 回答 1

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 );
于 2015-09-03T19:26:23.617 回答