【问题标题】:CasperJS looping through each URLCasperJS 循环遍历每个 URL
【发布时间】:2023-03-16 15:51:02
【问题描述】:

这个问题是similartoothers,但我遇到的问题比较基本。

这是我的代码:

var links = [];
var casper = require('casper').create();

function getLinks() {
    var links = document.querySelectorAll('div#mw-content-text table.wikitable tbody tr td i b a');
    return Array.prototype.map.call(links, function(e) {
        return 'https://en.wikipedia.org' + e.getAttribute('href');
    });
}

casper.start('https://en.wikipedia.org/wiki/David_Bowie_discography');

casper.then(function() {
    // aggregate results for the 'casperjs' search
    links = this.evaluate(getLinks);
});

casper.each(links, function (self, link) {
    self.thenOpen(fullURL, function () {
        this.echo(this.getTitle() + " - " + link);
    });
});

casper.run();

我知道 links 是从 Quickstart 复制而来的,但我随后对其进行了修改以打开所有找到的链接。

我得到的是什么都没有回显,而不是输出我期望的每个标题。这就是我调用文件的方式:

~ $ casperjs casper-google-disco.js

【问题讨论】:

    标签: javascript


    【解决方案1】:

    最后修复非常简单,但我花了很长时间才找到它,因为没有错误,而且似乎没有其他人遇到过这个问题。

    问题是在调用each 之前没有设置links 变量。将each 放在then 函数中解决了我的问题。

    CasperJS 示例中的 each.js example 有助于确认您可以在不需要 IIFE 的情况下循环遍历数组。

    var links = [];
    var casper = require('casper').create();
    
    function getLinks() {
        var links = document.querySelectorAll('div#mw-content-text table.wikitable tbody tr td i b a');
        return Array.prototype.map.call(links, function(e) {
            return 'https://en.wikipedia.org' + e.getAttribute('href');
        });
    }
    
    casper.start('https://en.wikipedia.org/wiki/David_Bowie_discography');
    
    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
    
        casper.each(links, function (self, link) {
            self.thenOpen(link, function () {
                this.echo(this.getTitle() + " - " + link);
            });
        });
    });
    
    
    casper.run();
    

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多