2016-10-21 6 views
0

페이지에서 모든 링크를 얻을 수 HTTP, HTTPS, FTP 또는 FTPS (난이 정규식이 있다고 가정 . 그 사용해야합니다 ... 사용 casperjs 내가 시작 <code>a</code><code>href</code> 속성과 <code>img</code><code>src</code> 모두에서 링크 만 얻을 casperJS 및 phantomJS를 사용할 필요가

나는 단지 a 태그에서 링크를 얻는 코드를 구현 ((http|https|ftp|ftps):\/\/[^"]+)"/g), 그러나 나는 또한 정규식과 일치 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

사용하는 거라고하지만 정규식이 좋아 보인다. 간단히 말하면,'http | https | ftp | ftps'를'https? ftps?'로 줄일 수 있습니다. – antoni

답변

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); 
    }); 
}); 

이 정규식은 바로 내 눈에 보이지 않는, 그래서 내가 casperjs를 모르는 var regex = /^(ht|f)tps?:\/\//;

+1

이것은 내가 찾고있는 것입니다. 고마워요! 이 질문을보십시오 http://stackoverflow.com/questions/40171792/generate-har-file-from-array-of-links-using-phantomjs? 배열에서 각 링크에 대해 여러개의 har 파일을 생성해야하는데 실제로이 도움이 필요합니다 ... – Valip

+0

파벨은 이런 식으로 부탁하지 마십시오. 귀하의 질문을 봤는데 왜 중복 질문에 대한 Vaviloffs 제안을 사용할 수 없는지 알지 못합니다. 그것은 쉬워야합니다. 아직 시도하지 않았습니다. –