如何在casperjs中访问多个网页
how to access to many webpages in casperjs
我是 casperjs 的初学者,我正在尝试自动访问网站并抓取一些信息,我启动 url 然后将一些 link 存储在 table 调用了 "links",然后我尝试单击 table 中的第一个元素 (links[0]),最后测试 link 是否具有id("ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2")存在。
问题是,我无法获得任何输出,我猜这是因为程序首先无法访问 link(links[0]),这就是为什么它找不到我要找的 id 的原因。
这是我写的代码。
var url=''; //first link
var casper = require('casper').create();
var links;
var lien;// second link
function getLinks() {
var links = document.querySelectorAll('td a');
return Array.prototype.map.call(links, function (e) {
return e.getAttribute('href')
});
}
casper.start(url);
casper.then(function () {
links = this.evaluate(getLinks);
});
casper.then(function () {
lien = links[0];
});
casper.thenOpen(lien , function(){
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
}
else {console.log('does not exist');
}
});
casper.run(function () {
this.exit();
});`
this is the link I'm trying the find
请注意,我使用的 casperjs 版本是 1.1.4
this is what shows the console
为了使其正常工作,您需要将其包装在测试套件中。至少我是这样做的。我不是最新的 casper,我不知道过去一年是否有任何变化,但以前的问题是你无法在没有 v1 中的测试套件的情况下启动 casper。
请使用以下命令在您的终端中开始跟踪代码
casperjs test filename.js
在你的filename.js中输入以下代码
var url = 'https://www.marchespublics.gov.ma/pmmp/';
var url2 = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
casper.test.begin('Scraping start', 3, function(test) {
casper.start(url, function() {
this.test.pass('Opened 1st page');
})
.thenOpen(url2, function(){
this.test.pass('Opened 2nd page')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.test.pass('the heading exists');
} else {
this.test.fail('Does not exist');
}
})
.run(function() {
test.done();
});
});
有关 casperjs 在执行脚本时的更多详细信息,请尝试使用 运行 附加参数,例如
casperjs test filename.js --verbose --log-level=debug
希望对您有所帮助
编辑 1:
这在没有测试套件的情况下也能正常工作,只需调用此代码
casperjs filename.js
var casper = require('casper').create();
var url = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
casper
.start(url, function() {
this.echo('Opened page')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
} else {
this.echo('Does not exist');
}
})
.run();
我是 casperjs 的初学者,我正在尝试自动访问网站并抓取一些信息,我启动 url 然后将一些 link 存储在 table 调用了 "links",然后我尝试单击 table 中的第一个元素 (links[0]),最后测试 link 是否具有id("ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2")存在。
问题是,我无法获得任何输出,我猜这是因为程序首先无法访问 link(links[0]),这就是为什么它找不到我要找的 id 的原因。 这是我写的代码。
var url=''; //first link
var casper = require('casper').create();
var links;
var lien;// second link
function getLinks() {
var links = document.querySelectorAll('td a');
return Array.prototype.map.call(links, function (e) {
return e.getAttribute('href')
});
}
casper.start(url);
casper.then(function () {
links = this.evaluate(getLinks);
});
casper.then(function () {
lien = links[0];
});
casper.thenOpen(lien , function(){
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
}
else {console.log('does not exist');
}
});
casper.run(function () {
this.exit();
});`
this is the link I'm trying the find
请注意,我使用的 casperjs 版本是 1.1.4
this is what shows the console
为了使其正常工作,您需要将其包装在测试套件中。至少我是这样做的。我不是最新的 casper,我不知道过去一年是否有任何变化,但以前的问题是你无法在没有 v1 中的测试套件的情况下启动 casper。
请使用以下命令在您的终端中开始跟踪代码
casperjs test filename.js
在你的filename.js中输入以下代码
var url = 'https://www.marchespublics.gov.ma/pmmp/';
var url2 = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
casper.test.begin('Scraping start', 3, function(test) {
casper.start(url, function() {
this.test.pass('Opened 1st page');
})
.thenOpen(url2, function(){
this.test.pass('Opened 2nd page')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.test.pass('the heading exists');
} else {
this.test.fail('Does not exist');
}
})
.run(function() {
test.done();
});
});
有关 casperjs 在执行脚本时的更多详细信息,请尝试使用 运行 附加参数,例如
casperjs test filename.js --verbose --log-level=debug
希望对您有所帮助
编辑 1:
这在没有测试套件的情况下也能正常工作,只需调用此代码
casperjs filename.js
var casper = require('casper').create();
var url = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
casper
.start(url, function() {
this.echo('Opened page')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
} else {
this.echo('Does not exist');
}
})
.run();