【问题标题】:How to use node.io for HTML parsing from node.js?如何使用 node.io 从 node.js 进行 HTML 解析?
【发布时间】:2013-11-21 10:29:57
【问题描述】:

我正在尝试在node.js 上使用node.io 来解析一个HTML 页面,该页面作为变量中的字符串。

我在将 HTML 字符串作为参数传递给我的 node.io 作业时遇到了麻烦。

这是我的节点文件nodeiotest.js中的代码摘录:

var nodeIOJob   =    require('./nodeiojobfile.js');
var nodeio = require('node.io');

vat htmlString = 'HTML String Here';

nodeio.start(nodeIOJob.job, function(err, output) {
        console.log(output);
}, true);

接下来是我的文件nodeiojobfile.js的摘录:

var nodeio = require('node.io');

var methods = {
   input: ['xxxxxxxxxxxxxxxx'],    // htmlString is suppossed to come here
   run: function (num) {
       console.log(num);
       this.emit('Hello World!');
   }
}

exports.job = new nodeio.Job(methods);

如何将我的 htmlString 作为参数发送到另一个文件中的工作?

此外,在收到文件后,我需要将其解析为 HTML 并执行一些基本的 CSS 选择(例如 getElementById() 等),并且需要计算某些 HTML 元素的offsetHeight。文档说我可以使用 get()getHTML() 方法来解析 URL 的 html,但是字符串中的 HTML 呢?如何解析它们?

出于测试目的,我使用了以下 HTML:

<div>
    <p id="p1">
        Testing document
    </p>
</div>

我正在尝试选择&lt;p&gt;,然后找出它的高度。

谁能帮助我? 提前谢谢!!

【问题讨论】:

  • 好吧,经过数小时破坏我的大脑和键盘按键后,我决定无法完成它,至少不能让它成为一项非常低效的任务......如果有人找到了,请告诉我轻量级的解决方案...

标签: javascript node.js web-scraping npm node.io


【解决方案1】:

我不熟悉node.io,但我想你想要这样的东西:

// nodeiotest.js
...
var htmlString = 'HTML String Here';
nodeio.start(nodeIOJob.job(htmlString), function(err, output) {
  console.log(output);
}, true);

// nodeiojobfile.js
var nodeio = require('node.io');

module.exports.job = function(htmlString) { 
  var methods = {
    input: [ htmlString ],
    run  : function (num) { 
      console.log(num);
      this.emit('Hello World!');
    }
  };
  return new nodeio.Job(methods);
};

【讨论】:

  • thnx robert 但对我来说更大的问题是在服务器端找到元素的高度,我似乎无法使用 node.io 和 jsdom 也有一个关于它的错误。 ....您能否为此建议一个解决方案,也许是像 phantomjs 之类的服务器端无头浏览器或类似的东西....
  • @SurenderThakran 是的,您将不得不为此使用类似浏览器的解决方案(例如您提到的 PhantomJS)。
  • 我害怕这个。您能推荐任何与node.js 兼容的浏览器吗? PhantomJS 不是作为节点模块出现的,必须作为子进程使用,如果我在命令行中运行无头浏览器,我不确定如何获取元素的高度。
  • @SurenderThakran 也许是zombie,但我不确定它是否实现了实际渲染(以获取尺寸)
  • thnx 会试一试的!!
猜你喜欢
  • 1970-01-01
  • 2011-11-14
  • 2016-03-22
  • 2012-04-06
  • 2016-01-16
  • 2012-09-03
  • 2012-07-12
相关资源
最近更新 更多