简体   繁体   English

在Node JS中使用YQL

[英]Using YQL in Node JS

enter code here I am trying to extract content out of a website for learning purposes. enter code here我正在尝试从网站中提取内容以供学习。 I used YQL for that and it gave me JSON back( https://developer.yahoo.com/yql/ ). 我为此使用了YQL,它给了我JSON( https://developer.yahoo.com/yql/ )。 I thought I was making progress but unfortunately I was not able to get same output via NPM module. 我以为自己正在取得进步,但不幸的是我无法通过NPM模块获得相同的输出。 Following is my code: 以下是我的代码:

var YQL = require('yql');
new YQL.exec('select * from html where url="http://www.natnlawcenter.com/United-States-Car-Dealerships/Alabama.aspx" ', function(response) {
  console.log(response);
});

and following is my output: 以下是我的输出:

{ query: 
   { count: 1,
     created: '2015-09-27T23:51:25Z',
     lang: 'en-US',
     results: { body: [Object] } } }

How do I access content of body:[Object]? 如何访问body:[Object]的内容?

Thanks for your time. 谢谢你的时间。

I have modified the code as below: 我修改了如下代码:

request({
    method: 'GET',
    url: 'http://www.natlawcenter.com/United-States-Car-Dealerships/Alabama.aspx'
}, function(err, response, body) {
    if (err) return console.error(err);
    // Tell Cherrio to load the HTML
     $ = cheerio.load(body);
    console.log($('td').each(function(i, element){
      var a = $(this);
      console.log(a);
    }));
});

and following is my output: 以下是我的输出:

{ options: 
   { withDomLvl1: true,
     normalizeWhitespace: false,
     xmlMode: false,
     decodeEntities: true },
  _root: 
   { '0': 
      { type: 'root',
        name: 'root',
        attribs: {},
        children: [Object],
        next: null,
        prev: null,
        parent: null },
     options: 
      { withDomLvl1: true,
        normalizeWhitespace: false,
        xmlMode: false,
        decodeEntities: true },
     length: 1,
     _root: [Circular] },
  length: 0,
  prevObject: 
   { options: 
      { withDomLvl1: true,
        normalizeWhitespace: false,
        xmlMode: false,
        decodeEntities: true },
     _root: { '0': [Object], options: [Object], length: 1, _root: [Circular] },
     length: 0,
     prevObject: { '0': [Object], options: [Object], length: 1, _root: [Circular] } } }
[Function]
[Function]
[Function]
[Function]
[Function]
{ '0': 
   { type: 'tag',
     name: 'td',
     attribs: { valign: 'top', width: '999' },
     children: [ [Object], [Object] ],
     next: 
      { data: '\r\n\t\t\t\t\t\t\t\t',
        type: 'text',
        next: null,
        prev: [Circular],
        parent: [Object] },
     prev: 
      { data: '\r\n\t\t\t',
        type: 'text',
        next: [Circular],
        prev: null,
        parent: [Object] },
     parent: 
      { type: 'tag',
        name: 'tr',
        attribs: {},
        children: [Object],
        next: [Object],
        prev: [Object],
        parent: [Object] } },
-------------------------------
'188': 
   { type: 'tag',
     name: 'td',
     attribs: { width: '25%', icobalt: 'System.Web.UI.ITemplate' },
     children: 
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object] ],
     next: 
      { type: 'tag',
        name: 'td',
        attribs: [Object],
        children: [Object],
        next: [Object],
        prev: [Circular],
        parent: [Object] },
     prev: 
      { type: 'tag',
        name: 'tr',
        attribs: [Object],
        children: [Object],
        next: [Circular],
        prev: [Object],
        parent: [Object] },
     parent: 
      { type: 'tag',
        name: 'tbody',
        attribs: {},
        children: [Object],
        next: null,
        prev: null,
        parent: [Object] } },

How can I access whats in children object of for example '188'? 如何访问子对象(例如“ 188”)中的内容?

Thanks for your time. 谢谢你的时间。

You need parse the JSON response in to JS object using JSON.parse() . 您需要使用JSON.parse()JSON响应解析为JS对象。 Your code can we re-written like so - 您的代码可以这样重写吗?

request({
    method: 'GET',
    url: 'http://www.natlawcenter.com/United-States-Car-Dealerships/Alabama.aspx'
}, function(err, response, body) {
    if (err) return console.error(err);

    if (response.statusCode === 200 && body) return JSON.parse(body);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM