JS / Node: - 使用node.io选择标签

时间:2013-10-31 09:53:17

标签: javascript node.js node.io

我是初学者,并使用node.io执行分配以删除此页面的内容 http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm

我想保存<< P>标签作为变量中的字符串。

我的代码是:

  

var nodeio = require('node.io'); var methods = {       输入:false,       run:function(){           this.getHtml( 'http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm',   function(err,$){

        //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'的元素。请帮忙..

1 个答案:

答案 0 :(得分: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();