Javascript 幻影可以';t加载iframe
我是个新手,最近开始在casperjs中使用phantomjs。我想从iframe获取信息,但phantomjs无法加载它 这是我的剧本:Javascript 幻影可以';t加载iframe,javascript,iframe,web-scraping,phantomjs,casperjs,Javascript,Iframe,Web Scraping,Phantomjs,Casperjs,我是个新手,最近开始在casperjs中使用phantomjs。我想从iframe获取信息,但phantomjs无法加载它 这是我的剧本: var casper = require('casper').create({ verbose: true, logLevel: "debug", waitTimeout: 20000, retryTimeout: 100, viewportSize: { width: 1920, height: 1080
var casper = require('casper').create({
verbose: true,
logLevel: "debug",
waitTimeout: 20000,
retryTimeout: 100,
viewportSize: {
width: 1920,
height: 1080
},
pageSettings: {
"userAgent": 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
},
localToRemoteUrlAccessEnabled: true
});
casper.start();
casper.open('http://www.badboysbarber.ru/online');
casper.waitForSelector('.y-main-container', function() {
this.echo("Selector appeared.");
});
casper.then(function() {
this.capture('screen.png');
});
casper.run();
因此,phantom抛出一个错误(尽管选择器定义正确):
谁能帮帮我吗?也许我做错了什么?谢谢。一个
iframe
将一个文档加载到另一个文档中。如果您想使用框架并使用CasperJS获取数据,您可能需要在Casper.prototype
中使用withFrame()
以下脚本捕获主页中第一个iframe
的原始HTML内容:
var casper = require('casper').create({
viewportSize: {
width: 1920,
height: 1080
},
pageSettings: {
'userAgent': 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
},
localToRemoteUrlAccessEnabled: true
});
casper.start('http://www.badboysbarber.ru/online');
casper.withFrame(0, function () {
this.echo(this.getHTML()); // HTML code of the first iframe
});
casper.run();
很抱歉,即使使用withFrame函数,也无法加载iframe。只需尝试使用
this.captureSelector('selector.png','.y-main-container')
而不是this.echo(this.getHTML())代码>内置withFrame函数,您将看到。这就是整个问题所在。此外,您还可以查看。如果您可以获得HTML代码,则显然加载了iframe
。您只是在捕获方面遇到了问题。我尝试了this.capture('screenshot.png')
insidewithFrame
和SlimerJS,我可以看到iframe
,不仅当SlimerJS处理页面时,而且在结果屏幕截图上:实际上,只有进度条图标和css/脚本链接加载在这个iframe中,而不是iframe的整个HTML代码。似乎在iframe中有一些ajax对内容加载的调用,也使用了AngularJS。正如我之前所说,PhantomJS挂断了iframe加载,对我来说,它显示了带有进度条图标的白色空白框,而不是iframe内容。这真的不是一个bug吗?我会试试更苗条的。既然你的屏幕截图上有一个正确加载的页面,它也应该适合我。谢谢你的帮助。
var casper = require('casper').create({
viewportSize: {
width: 1920,
height: 1080
},
pageSettings: {
'userAgent': 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
},
localToRemoteUrlAccessEnabled: true
});
casper.start('http://www.badboysbarber.ru/online');
casper.withFrame(0, function () {
this.echo(this.getHTML()); // HTML code of the first iframe
});
casper.run();