javascript - page.evaluate - 如何写入其中的文件?

标签 javascript phantomjs

如何将 page.evaluate 内的结果写入文件?当将结果放入 console.log 时,此代码工作正常,但写入文件时,使用 ts 会引发错误。

page.evaluate(function(url) {
        function getHTTPResponseString(url, callback) {
            try {
                var xhr = new XMLHttpRequest();
                xhr.onload = function() {
                    if (this.status == 200) {
                        var u8 = new Uint8Array(this.response), bs = [];
                        for (var i = u8.length - 1; i >= 0; --i) {
                            bs[i] = String.fromCharCode(u8[i]);
                        }
                        callback(bs.join(''));
                    } else {
                        console.log(this.statusText);
                        callback('');
                    }
                }
                xhr.open('GET', url, true);
                xhr.responseType = 'arraybuffer';
                xhr.send();
            } catch (e) {
                console.log(JSON.stringify(e));
            }
        }
        getHTTPResponseString(url, function(result) {
            console.log(result);
        })
    }, url);

最佳答案

我发现可以通过在 page.evaluate 内部调用 window.callphantom() 来传递数据,然后通过 page.onCallback< 处理传递的数据 事件:

page.onCallback = function(result) {
    var fs = require('fs');
    fs.write('file.out', result, 'w');
};


getHTTPResponseString(url, function(result) {
     console.log(result);
     window.callPhantom(result);
})

关于javascript - page.evaluate - 如何写入其中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221435/

相关文章:

javascript - 通过引用传递的参数

javascript - 链接打开但模态背景仍然存在

javascript - 带节点的 Phantomjs 给出 "Promise pending"

phantomjs - 在本地运行 karma 时,phantomjs 无法启动

javascript - 使用 PhantomJS 进行单元测试时如何防止 img src 404 错误

javascript - 删除未选中的 radio 类别

javascript - Array.prototype.slice.call(arguments) 与 Array.prototype.slice.apply(arguments)

javascript - Batarang 正则拦截表达式

pdf - PhantomJS PDF DPI 缩放问题

PhantomJS:抓取多个 URL 时出现空白页