使用casperjs获取页面的所有链接
Use casperjs to get all links from a page
我需要使用 casperJS 和 phantomJS 来仅从 a
href
属性和 img
src
中获取以 http、https、[= 开头的链接22=] 或 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();
});
字符串提供 match
函数,您可以在其中评估正则表达式。它 returns 将匹配作为数组或 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?:\/\//;
我需要使用 casperJS 和 phantomJS 来仅从 a
href
属性和 img
src
中获取以 http、https、[= 开头的链接22=] 或 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();
});
字符串提供 match
函数,您可以在其中评估正则表达式。它 returns 将匹配作为数组或 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?:\/\//;