我需要使用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();
});
答案 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?:\/\//;