我有一个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,请帮助了解这段代码中有什么错误?

最佳答案

这将更新getLinks以创建并返回一个包含td的externalHTML字符串的区域。您不能在getHTML()中使用getLinks。 Casper评估getLinks并在页面上执行,因此必须是普通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);
});


我更新了选择器,从td中选择了tr

关于javascript - 如何使用casperjs在标签中获取文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46350028/

10-10 08:25