1

我是一个初学者,正在做一个使用 node.io
http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm来抓取这个页面的内容的任务。

我想将 < P > 标签下的文本内容保存为变量中的字符串。

我的代码是这样的:

var nodeio = require('node.io'); var方法={输入:假,运行:函数(){this.getHtml(' http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm ',函数(错误,$){

        //Handle any request / parsing errors
        if (err) this.exit(err);


         var content = $('P');

         this.emit(content);
    });
} }

exports.job = new nodeio.Job({timeout:10}, methods);

这显示错误:没有匹配“P”的元素。请帮忙..

4

1 回答 1

1

Error: No elements matching 'P'执行命令时我也得到了:

$ ./node_modules/.bin/node.io query http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm P

根本原因是</P>该页面没有尽头,并且 node.io 不支持对现代 Web 浏览器等格式错误的 HTML 进行自动更正。虽然查询时效果很好<blockquote>

$ ./node_modules/.bin/node.io query http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm blockquote

但是,您可以通过使用selenium技术在真实浏览器上解析 HTML 文档来实现。

这是示例 javascript 可以在您的主机上使用节点和 selenium 网格运行以获得您想要的内容。您可以参考我对问题的其他答案How do you get webdriverjs working?

var webdriverjs = require('webdriverjs');

var client = webdriverjs.remote({
  host: 'localhost',
  port: 4444,
  desiredCapabilities: {
    browserName: 'safari', // you can change this accordingly
    version: '7',
    platform: "MAC"  // you can change this accordingly
  }
});

client.init();

client.url('http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm')
  .getText("P",function(err, text) { console.log (text)}).call(function () {});

client.end();
于 2013-10-31T14:16:59.997 回答