use*_*226 5 javascript web-crawler hyperlink phantomjs casperjs
我在点击DOM中所有基于JavaScript的链接并保存输出时遇到问题.链接有表格
<a id="html" href="javascript:void(0);" onclick="goToHtml();">HTML</a>
Run Code Online (Sandbox Code Playgroud)
以下代码效果很好:
var casper = require('casper').create();
var fs = require('fs');
var firstUrl = 'http://www.testurl.com/test.html';
var css_selector = '#jan_html';
casper.start(firstUrl);
casper.thenClick(css_selector, function(){
console.log("whoop");
});
casper.waitFor(function check() {
return this.getCurrentUrl() != firstUrl;
}, function then() {
console.log(this.getCurrentUrl());
var file_title = this.getTitle().split(' ').join('_') + '.html';
fs.write(file_title, this.getPageContent());
});
casper.run();
Run Code Online (Sandbox Code Playgroud)
但是,如何使用"a"选择器,单击所有可用链接并保存内容?我不知道如何让clickWhileSelector从选择器中删除节点,如下所示:单击与选择器匹配的所有链接
rus*_*sln 14
我有这个脚本,首先从页面获取所有链接,然后将'href'属性保存到数组,然后迭代这个数组,然后逐个打开每个链接并回显url:
var casper = require('casper').create({
logLevel:"verbose",
debug:true
});
var links;
casper.start('http://localhost:8000');
casper.then(function getLinks(){
links = this.evaluate(function(){
var links = document.getElementsByTagName('a');
links = Array.prototype.map.call(links,function(link){
return link.getAttribute('href');
});
return links;
});
});
casper.then(function(){
this.each(links,function(self,link){
self.thenOpen(link,function(a){
this.echo(this.getCurrentUrl());
});
});
});
casper.run(function(){
this.exit();
});
Run Code Online (Sandbox Code Playgroud)