Javascript PhantomJS和CasperJS单击链接并获取html
我被CasperJS脚本困住了:Javascript PhantomJS和CasperJS单击链接并获取html,javascript,ajax,phantomjs,casperjs,scraper,Javascript,Ajax,Phantomjs,Casperjs,Scraper,我被CasperJS脚本困住了: var casper = require('casper').create(); var fs=require('fs'); casper.start('http://int.soccerway.com/national/switzerland/super-league/20152016/regular-season/r31601/matches/?ICID=PL_3N_02', function() { this.wait(2000, function(
var casper = require('casper').create();
var fs=require('fs');
casper.start('http://int.soccerway.com/national/switzerland/super-league/20152016/regular-season/r31601/matches/?ICID=PL_3N_02', function() {
this.wait(2000, function() {
fs.write("swiss.html", this.getHTML() );
});
this.wait(2000, function() {
var evObj = document.createEvent('Events');
evObj.initEvent('click', true, false);
document.getElementById('page_competition_1_block_competition_matches_6_previous').dispatchEvent(evObj);
});
this.wait(2000, function() {
fs.write("swiss2.html", this.getHTML() );
});
});
casper.run();
我想打开代码中的链接,然后单击“上一步”并获取页面的html(我想获取一个包含每个比赛结果的完整赛季的html文档)
我做错了什么?(我是新手)
谢谢。脚本几乎正确。唯一的错误是与页面交互时(单击“上一步”按钮) 您无法从脚本内部访问页面元素,必须在打开的网页上下文中计算(“注入”)该代码。在CasperJS中,有这样一个函数
var casper=require('casper').create();
var fs=需要('fs');
卡斯珀,开始http://int.soccerway.com/national/switzerland/super-league/20152016/regular-season/r31601/matches/?ICID=PL_3N_02,函数(){
this.wait(2000,function(){
write(“swiss.html”,this.getHTML());
});
this.wait(2000,function(){
//此函数内部的代码将运行
//就好像它被放置在目标页面中一样。
casper.评估(功能(术语){
var evObj=document.createEvent('Events');
evObj.initEvent('click',true,false);
var prev_link=document.getElementById('page_competition_1_block_competition_matches_6_previous');
prev_link.dispatchEvent(evObj);
});
});
this.wait(2000,function(){
write(“swiss2.html”,this.getHTML());
});
});
casper.run();
或者,不使用casper.evaluate,只需编写
this.click('#page_competition_1_block_competition_matches_6_previous');
正如Artjom B.所建议的那样。您试图在页面上下文之外使用DOM,这是不可能的。不管怎样,你为什么不使用CasperJS的点击功能呢<代码>casper。单击(选择器)感谢您100%的工作!;)