【问题标题】:How to get a text in tag with casperjs?如何使用 casperjs 获取标签中的文本?
【发布时间】:2017-09-21 17:36:46
【问题描述】:

我有一个 html 代码:

<div class="div_table_body">
<table class="part_listing">
    <tr><td>sometext</td></tr>
    <tr><td>sometext2</td></tr>
    ...
</table>
</div>

我尝试使用 casperjs 在标签“td”中获取文本:

function getLinks() {
    var tr = document.querySelectorAll('div.div_table_body table.part_listing tr');
    return Array.prototype.map.call(tr, function (e) {
        return e.getHTML('td', true);
        });
    }
    casper.then(function () {
        links = this.evaluate(getLinks);
        console.log('links ' +links);
        });

但是我得到一个 NULL,请帮助理解这段代码中的错误是什么?

【问题讨论】:

    标签: javascript phantomjs casperjs


    【解决方案1】:

    这将更新getLinks 以创建并返回一个包含td 的outerHTML 字符串的区域。您不能在getLinks 中使用getHTML()。 Casper 评估 getLinks 并在页面上执行它,所以它需要是 vanilla JS。

    function getLinks() {
        var tr = document.querySelectorAll('div.div_table_body table.part_listing tr'); 
        return Array.prototype.map.call(tr, function (e) {
            return e.querySelector('td').outerHTML;
        });
    }
    

    仅使用 Casper 获取:

    casper.start('http://www.example.com', function() {
        this.getHTML('div.div_table_body table.part_listing tr > td', true); 
    });
    

    我更新了您的选择器以从 trs 中选择 tds。

    【讨论】:

      【解决方案2】:

      如何使用 CasperJS 轻松获取文本内容:

      CasperJS 允许您使用getElementsInfo() 及其对应的.text 属性访问元素的textContent

      简答:

      var td = this.getElementsInfo('.div_table_body > .part_listing > tbody > tr > td');
      this.echo(td[0].text); // Result: sometext
      

      完整答案:

      var casper = require('casper').create();
      
      casper.start('https://www.example.com/', function () {
        var td = this.getElementsInfo('.div_table_body > .part_listing > tbody > tr > td');
        var td_array = [].map.call(td, function (element) {
          return element.text.trim();
        });
        
        this.echo(td_array); // Result: sometext,sometext2
      });
      
      casper.run();
      

      这将返回一个包含[sometext, sometext2] 的数组。

      【讨论】:

      • 非常感谢您的回答
      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2019-02-06
      • 1970-01-01
      相关资源
      最近更新 更多