0
我正在運行一個需要某些亞馬遜書籍的預覽內容(它們可以是PNG圖像或html內容)的小項目。CasperJS不適用於亞馬遜iframe
例如,這本書:https://www.amazon.com/gp/product/B00JNYEXCK/。
當點擊「Look inside」徽章(id =「sitbLogoImg」的img標籤)時,會出現一個新框架,顯示本書的預覽內容。它有2個版本,打印預覽(這是PNG圖像,這些我可以抓住)和點燃預覽(這是iframe文件)。
我堅持使用iframe針對Kindle預覽,基本上是這樣的:
<div id="scrollElm-0" class="pageHtml">
<div id="sitbReaderKindleSample">
<iframe id="sitbReaderFrame">
<html>
<head></head>
<body>
<p>.......</p>
<div>......</div>
....
</body>
</html>
</iframe>
</div>
</div>
這裏是我的CasperJS腳本:
var fs = require('fs');
var casper = require('casper').create({
pageSettings: {
loadPlugins: false,
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36'
}
});
casper.options.viewportSize = {
width: 1366,
height: 768
};
casper.options.waitTimeout = 10000;
// use any cookies
var cookieFilename = "cookies.txt";
var data = fs.read(cookieFilename);
if (data) {
phantom.cookies = JSON.parse(data);
}
casper.start('https://www.amazon.com/gp/product/B00JNYEXCK/', function() {
this.echo(this.status(true));
this.captureSelector('before.png', 'html');
});
casper.waitForSelector('img#sitbLogoImg', function() {
//this.captureSelector('before.png','html');
});
casper.then(function() {
this.click('img#sitbLogoImg');
});
casper.waitForSelector('div#sitbLBHeader', function() {
});
var lis_content = '';
casper.wait(3000, function() {
this.captureSelector('after.png', 'html');
});
casper.withFrame(1, function() {
lis_content = this.getHTML();
this.captureSelector('lis_content.png', 'html');
});
//Write the sitbReaderFrame to file
casper.then(function() {
var lis_content_filename = 'lis_content.html';
fs.write(lis_content_filename, lis_content, 644);
});
// write the cookies
casper.wait(1000, function() {
var cookies = JSON.stringify(phantom.cookies);
fs.write(cookieFilename, cookies, 644);
});
casper.run();
問題是iframe只有id =「sitbReaderFrame」,但沒有名稱,我試過casperjs.withFrame與幀索引號從0到4,但它似乎不在CapserJS視圖中退出。
我想聽聽你的任何建議,因爲我真的被困在這裏。非常感謝你,對我英語不好的話感到抱歉。
可能有用:[?滾動與JavaScript的iframe](http://stackoverflow.com/questions/1192228/scrolling-an-iframe-with-javascript) | [CasperJS ScrollTo](http://docs.casperjs.org/en/latest/modules/casper.html#scrollto) – 2016-12-30 15:08:51