Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 带节点的截屏URL-异步_Node.js - Fatal编程技术网

Node.js 带节点的截屏URL-异步

Node.js 带节点的截屏URL-异步,node.js,Node.js,这是我的密码: const fs = require('fs'); const screenshot = require('screenshot-stream'); const urlp = require('url'); var urls=[ 'https://archive.org/details/8bitrecs', 'http://hackaday.com/', 'http://techcrunch.com/2012/02/16/auraslate-is-an-open-source-a

这是我的密码:

const fs = require('fs');
const screenshot = require('screenshot-stream');
const urlp = require('url');
var urls=[
'https://archive.org/details/8bitrecs',
'http://hackaday.com/',
'http://techcrunch.com/2012/02/16/auraslate-is-an-open-source-android-tablet-for-hackers/',
'http://www.english.illinois.edu/-people-/faculty/debaron/482/482readings/greenfield.html',
'http://sustain.rca.ac.uk/Sustain-Talks'];
urls.forEach(function(url){
    const stream = screenshot(url, '1024x768', {crop: true});
    stream.pipe(fs.createWriteStream(urlp.parse(url).hostname + 'test-1024x768.png')); 
});
它只截图url中的最后一项。其他是零字节的图像。我认为我需要异步执行该操作,这样就不会每次都覆盖流

我该怎么做

更新: 我希望屏幕截图能够正常工作,但如果url不可访问,则捕获错误,而不是阻止

更新: 虽然下面的代码仍然让我的电脑速度慢了很多,但效果更好

const screenshotPromise = require('screenshot-promise');


您未能在此处添加的是错误:

events.js:160
投掷者;//未处理的“错误”事件 ^

错误:无法加载url:
在LineStream.byline.on.data中
(e:--\node\u modules\screenshot stream\index.js:77:16)
在emitOne(events.js:96:13)
在LineStream.emit(events.js:188:7)

问题是模块
屏幕截图流
正在使用PhantomJS,而PhantomJS无法访问输出错误的页面

此错误似乎与此问题有关:

Techcrunch.com和Aol.com似乎使用Qt加载为应用程序字体的web字体(例如“BebasNeue webfont.ttf”)。那里可能出了点问题


我的建议是使用谷歌的Puppeter,它包含一个内置的屏幕截图方法:

我在最后做的代码,有效:

   const puppeteer = require('puppeteer');
const urlp = require('url');
var URL = require('url-parse');
var urls = [
    'https://archive.org/details/8bitrecs',
    'http://hackaday.com/',
    'http://techcrunch.com/2012/02/16/auraslate-is-an-open-source-android-tablet-for-hackers/',
    'http://www.english.illinois.edu/-people-/faculty/debaron/482/482readings/greenfield.html',
    'http://sustain.rca.ac.uk/Sustain-Talks',
    'https://www.quintessentially.com/',
    'https://www.producthunt.com/tech/ux-project-checklist',
    'https://freedom.press/',
    'http://issuu.com/search?q=vintage+motorcycle',
    'http://www.pocketmod.com/v2/',
    'https://www.metamind.io/',
    'http://nautil.us/blog/chernobyls-hot-mess-the-elephants-foot-is-still-lethal',
    'https://www.instructables.com/id/Tool-Storage-Hacks-or-How-to-Hang-Those-Black-Frid/',
    'https://www.zippi.co.uk/framed-photo-print'
];
var getLocation = function(href) {
    var l = document.createElement("a");
    l.href = href;
    return l;
};
(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    page.waitForNavigation({
        timeout: 40000
    });
    for (let i = 0; i < urls.length; i++) {
        const url = urls[i];
        var url1 = new URL(url);
        try {
            await page.goto(`${url}`);
            await page.screenshot({
                path: 'images/' + url1.hostname + '.png'
            });
        } catch (error) {
            console.log(error.message);
            // await page.close();
            // await browser.close();
            // process.exit(1);
            continue;
        }
    }
})();
const puppeter=require('puppeter');
const urlp=require('url');
var URL=require('URL-parse');
变量URL=[
'https://archive.org/details/8bitrecs',
'http://hackaday.com/',
'http://techcrunch.com/2012/02/16/auraslate-is-an-open-source-android-tablet-for-hackers/',
'http://www.english.illinois.edu/-people-/faculty/debaron/482/482readings/greenfield.html',
'http://sustain.rca.ac.uk/Sustain-Talks',
'https://www.quintessentially.com/',
'https://www.producthunt.com/tech/ux-project-checklist',
'https://freedom.press/',
'http://issuu.com/search?q=vintage+摩托车',
'http://www.pocketmod.com/v2/',
'https://www.metamind.io/',
'http://nautil.us/blog/chernobyls-hot-mess-the-elephants-foot-is-still-lethal',
'https://www.instructables.com/id/Tool-Storage-Hacks-or-How-to-Hang-Those-Black-Frid/',
'https://www.zippi.co.uk/framed-photo-print'
];
var getLocation=函数(href){
var l=document.createElement(“a”);
l、 href=href;
返回l;
};
(异步()=>{
const browser=wait puppeter.launch();
const page=wait browser.newPage();
page.waitForNavigation({
超时:40000
});
for(设i=0;i
stream定义的变量在哪里?const stream=screenshot(url,'1024x768',{crop:true});谷歌木偶演员看起来可能是一个更好的选择。谢谢
   const puppeteer = require('puppeteer');
const urlp = require('url');
var URL = require('url-parse');
var urls = [
    'https://archive.org/details/8bitrecs',
    'http://hackaday.com/',
    'http://techcrunch.com/2012/02/16/auraslate-is-an-open-source-android-tablet-for-hackers/',
    'http://www.english.illinois.edu/-people-/faculty/debaron/482/482readings/greenfield.html',
    'http://sustain.rca.ac.uk/Sustain-Talks',
    'https://www.quintessentially.com/',
    'https://www.producthunt.com/tech/ux-project-checklist',
    'https://freedom.press/',
    'http://issuu.com/search?q=vintage+motorcycle',
    'http://www.pocketmod.com/v2/',
    'https://www.metamind.io/',
    'http://nautil.us/blog/chernobyls-hot-mess-the-elephants-foot-is-still-lethal',
    'https://www.instructables.com/id/Tool-Storage-Hacks-or-How-to-Hang-Those-Black-Frid/',
    'https://www.zippi.co.uk/framed-photo-print'
];
var getLocation = function(href) {
    var l = document.createElement("a");
    l.href = href;
    return l;
};
(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    page.waitForNavigation({
        timeout: 40000
    });
    for (let i = 0; i < urls.length; i++) {
        const url = urls[i];
        var url1 = new URL(url);
        try {
            await page.goto(`${url}`);
            await page.screenshot({
                path: 'images/' + url1.hostname + '.png'
            });
        } catch (error) {
            console.log(error.message);
            // await page.close();
            // await browser.close();
            // process.exit(1);
            continue;
        }
    }
})();