【问题标题】:JS/Node:- Selecting a tag using node.ioJS/Node:- 使用 node.io 选择标签
【发布时间】:2013-11-01 21:27:55
【问题描述】:

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

我想将

标签下的文本内容保存为变量中的字符串。

我的代码是这样的:

var nodeio = require('node.io');变种方法 = { 输入:假, 运行:函数(){ 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”的元素。请帮忙..

【问题讨论】:

    标签: javascript node.js node.io


    【解决方案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 不支持对现代网络浏览器等格式错误的 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      相关资源
      最近更新 更多