Phantomjs无法加载iframe

时间:2017-06-01 09:34:43

标签: 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
   },
   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();

因此,幻像会抛出错误(尽管选择器已正确定义):

[error] [phantom] Wait timeout of 20000ms expired, exiting.

有人可以帮我吗?也许我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

iframe将文档加载到另一个文档中。如果您想使用框架并使用CasperJS来获取数据,则withFrame()中可能需要Casper.prototype

以下脚本捕获主页中第一个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();