Puppeteer page.goto ошибка только с readFileSync - PullRequest
0 голосов
/ 03 октября 2019

При использовании await page.goto ('http://www.URL.edu') создается PDF-файл, но при загрузке того же URL-адреса из CSV-файла Puppeteer возвращает ошибку.

Возможно, это либопроблема синхронизации или перенаправление с http на https, но сценарий доказывает, что проблема не в этом.

Закомментировано, где URL-адрес загружается из одного CSV-файла с одной строкой: «1, oldwestbury. edu, SUNY College в Old Westbury "

var dir1 = './screenshots';
var dir2 = './pdfs';
const fs = require('fs');

if (!fs.existsSync(dir1)) {
    fs.mkdirSync(dir1);
}

if (!fs.existsSync(dir2)) {
    fs.mkdirSync(dir2);
}

function readURLFile(path) {
    return fs.readFileSync(path, 'utf-8')
        .split('\n')
        .map((elt) => {
            const url = elt.split(',')[1].replace('\r', '');
            return `http://${url.toLowerCase()}`;
        });
}

const puppeteer = require('puppeteer');

(async () => {
    const startDate = new Date().getTime();
    const USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3239.108 Safari/537.36';
    const urls = readURLFile('./UNVurls.csv');
    const browser = await puppeteer.launch({
        headless: true
    });

    for (let url of urls) {
        console.log(`Visiting url: ${url}`);
        let page = await browser.newPage();

        try {
            await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 2 });

            await page.goto('http://www.oldwestbury.edu')

            // await page.goto(url, {
                // waitUntil: 'networkidle2',
                // timeout: 0
            // });


            let fileName = url.replace(/(\.|\/|:|%|#)/g, "_");
            if (fileName.length > 100) {
                fileName = fileName.substring(0, 100);
            }

            await page.waitForSelector('title');
            await page.screenshot({
                path: `./screenshots/${fileName}.jpeg`,
                omitBackground: true
            });

            await page.emulateMedia('screen');

            await page.pdf({
                path: `./pdfs/${fileName}.pdf`,
                pageRanges: "1",
                format: 'A4',
                printBackground: true
            });

        } catch (err) {
            console.log(`An error occured on url: ${url}`);
        } finally {
            await page.close();
        }
    }

    await browser.close();
    console.log(`Time elapsed ${Math.round((new Date().getTime() - startDate) / 1000)} s`);

})();

Надеемся определить, ПОЧЕМУ PDF создается при использовании URL-адреса direct и почему происходит сбой загрузки страницы при извлечении из файла CSV.

...