使用casperjs从页面

时间:2016-10-21 06:25:42

标签: javascript regex casperjs

我需要使用casperJS和phantomJS来仅获取来自a href属性和img src的以http,https,ftp或ftps开头的链接(我想这是应该使用的正则表达式:((http|https|ftp|ftps):\/\/[^"]+)"/g)

我实现了仅从a标记获取链接的代码,但我需要对其进行改进,以便从img标记中获取与正则表达式匹配的链接...

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

function getLinks() {
    var links = document.querySelectorAll('img');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('src')
    });
}

casper.start('https://marvel.com');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});

1 个答案:

答案 0 :(得分:0)

字符串提供match函数,您可以在其中评估正则表达式。它将匹配作为数组返回,如果没有匹配则返回null

casper.then(function(){
    var regex = /((http|https|ftp|ftps):\/\/[^"]+)"/g)/;
    var srcs = this.getElementsAttribute("img", "src").filter(function(src){
        return !!src.match(regex);
    });

    srcs.forEach(function(src){
        console.log(src);
    });
});

这个正则表达式看起来不正确,所以我使用var regex = /^(ht|f)tps?:\/\//;