【问题标题】:Noodle.js Setup/jQuery Process (Web Scraping Help!)Noodle.js 设置/jQuery 进程(网页抓取帮助!)
【发布时间】:2016-11-03 12:22:21
【问题描述】:

我已经通过 npm install 安装了 noodle.js,这就是我现在的代码。但是,当我在终端中运行此文件(noodleTest.js)时:node noodleTest.js,我收到以下错误:jQuery.getJSON 不是函数。我查看了有关此问题的大多数堆栈溢出答案,但找不到解决方法。通过http://noodlejs.com 提供的示例,它在控制台中返回一个数组,但是当我尝试运行这个 sn-p 时,我收到一个错误。任何帮助表示赞赏。

var noodle = require('noodlejs'),
jQuery = require ('jquery');

var query = {
        url: 'http://google.com/search?q=javascript',
        type: 'html',
        selector: 'h3.r a',
        extract: 'text'
    },
    uriQuery = encodeURIComponent(JSON.stringify(query)),
    request  = 'http://example.noodlejs.com/?q=' +
        uriQuery + '&callback=?';

// Make Ajax request to Noodle server
jQuery.getJSON(request, function (data) {
    console.log(data[0].results);
});

编辑:我尝试按照
http://%20github.com/dharmafly/noodle#noodle-as-a-node-module 给出的示例进行操作,并使用了在 noodlejs.com 上运行的示例,但我不确定如何读取数据,或如何提取对象中的内容。 var noodle = require('noodlejs');

noodle.query({
    url:      'http://google.com/search?q=javascript',
    selector: 'h3.r a',
    extract:  'text'
}) 
.then(function (results) {
    console.log(results);
});

这是以下输出:

 [noodle log  #1]
 Thu Jul 07 2016 00:09:43 GMT-0700 (PDT)
 Memory: 18.00mb (18870272 bytes)
 Noodle: The query follows...
 {"url":"http://google.com/search?q=javascript","selector":"h3.r a","extract":"text","type":"html","cache":true}


 [noodle log  #2]
 Thu Jul 07 2016 00:09:44 GMT-0700 (PDT)
 Memory: 19.00mb (19918848 bytes)
 Cache: Page has been cached


 [noodle log  #3]
 Thu Jul 07 2016 00:09:44 GMT-0700 (PDT)
 Memory: 20.00mb (20967424 bytes)
 Cache: Result has been cached

{ results: [ { results: [Object], created: 2016-07-07T07:09:44.286Z } ] }

【问题讨论】:

  • 你试过没有jquery的例子吗?你可以在这里找到它github.com/dharmafly/noodle#noodle-as-a-node-module 或者 jquery 是你需要使用的东西吗?
  • 感谢您的回复,我花了一些时间试图了解如何阅读它返回的结果,但我无法弄清楚这一点,是否有某种访问方式对象的内容?

标签: javascript jquery json ajax node.js


【解决方案1】:

这是一个有效的面条查询示例。不要关注我们正在报废的小细节,看看我要求的选择器和我想要提取的内容。

我从页面中随机选择了一个选择器,提取的数据是文本。但是要查看提取的文本,请查看我对结果所做的操作。

var noodle = require('noodlejs');

noodle.query({
  url:      'http://edition.cnn.com/',
  selector: '#intl_homepage1-zone-1 > div.l-container > div > div.column.zn__column--idx-0 > ul > article > a > h2',
  extract:  'text'
})
  .then(function (results) {
    console.log(results);
    console.log(results.results[0]);

  });

结果是链式的提取。

【讨论】:

  • 感谢您一直以来的帮助!是的,这确实让很多事情变得很清楚,我不确定为什么结果被链接,但我想两次进入结果只是返回数组,这很棒!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多