phantomjs實現迴圈

來源:互聯網
上載者:User

// Render Multiple URLs to filevar RenderUrlsToFile, arrayOfUrls, system;system = require("system");/*Render given urls@param array of URLs to render@param callbackPerUrl Function called after finishing each URL, including the last URL@param callbackFinal Function called after finishing everything*/RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {    var getFilename, next, page, retrieve, urlIndex, webpage;    urlIndex = 0;    webpage = require("webpage");    page = null;    getFilename = function() {        return "rendermulti-" + urlIndex + ".png";    };    next = function(status, url, file) {        page.close();        callbackPerUrl(status, url, file);        return retrieve();    };    retrieve = function() {        var url;        if (urls.length > 0) {            url = urls.shift();            urlIndex++;            page = webpage.create();            page.viewportSize = {                width: 800,                height: 600            };            page.settings.userAgent = "Phantom.js bot";            return page.open("http://" + url, function(status) {                var file;                file = getFilename();                if (status === "success") {                    return window.setTimeout((function() {                        page.render(file);                        return next(status, url, file);                    }), 200);                } else {                    return next(status, url, file);                }            });        } else {            return callbackFinal();        }    };    return retrieve();};arrayOfUrls = null;if (system.args.length > 1) {    arrayOfUrls = Array.prototype.slice.call(system.args, 1);} else {    console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");    arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "www.phantomjs.org"];}RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {    if (status !== "success") {        return console.log("Unable to render '" + url + "'");    } else {        return console.log("Rendered '" + url + "' at '" + file + "'");    }}), function() {    return phantom.exit();});

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.