Как отправить результаты из Puppeteer page.evaluate в файл csv? - PullRequest
0 голосов
/ 19 февраля 2019

Как я могу перенести данные из page.evaluate в csv-файл для анализа?

Заранее спасибо.

Я занимаюсь веб-обработкой, которая запускает цикл дляколичество страниц и описание отзывов.

Однако, хотя я могу сохранить результаты в журнале console.log, но я не могу соединить их или получить в формате файла CSV.Сможет ли кто-нибудь помочь с этим?

Спасибо, только что начал изучать кодирование и еще много чего еще узнал .....

puppeteer = require('puppeteer');
const CREDS = require('./creds');


(async function main() {
    try{
        const URL = 'https://www.qoo10.sg/gmkt.inc/Login/Login.aspx'; 

        const browser = await puppeteer.launch({ headless: false });
        const page = await browser.newPage();


        await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')

        await page.goto(URL ,{waitUntil:'networkidle0'});


        const USERNAME_SELECTOR = '#login_id';
        const PASSWORD_SELECTOR = '#passwd';
        const BUTTON_SELECTOR = '#dv_member_login > fieldset > a';

        await page.click(USERNAME_SELECTOR);
        await page.keyboard.type(CREDS.username);

        await page.click(PASSWORD_SELECTOR);
        await page.keyboard.type(CREDS.password);

        await page.click(BUTTON_SELECTOR);

        await page.waitForNavigation({waitUntil:'networkidle0'});

        const itemUrl = 'https://www.qoo10.sg/item/FANCO-FANCO-CEILING-FAN-FFM2000-FFM3000-FFM4000-FFM6000-LIGHT-KITS/496619203?banner_no=1305330';

        await page.goto(itemUrl, {waitUntil:'networkidle0'});

        const photoreviewsnumber = await page.evaluate(() => document.querySelector('#divPremiumList > div.rv_tit.photo > h2 > span').innerText);
        const photoreviewspage = Math.ceil(photoreviewsnumber/5);

            for (let i = 0; i < photoreviewspage; i++) {
            const button = await page.$('#photo_review_paging > a.next');
            button.click();



            const options = await page.evaluate(() => 
                Array.from(document.querySelectorAll('p.dtl')).map(partner => partner.innerText)
            );

            await page.waitFor(500);

            console.log(result);
            console.log(i);
        }

        await browser.close();

    } catch(e) {
        console.log('our error', e);
    }
})();

1 Ответ

0 голосов
/ 19 февраля 2019

Я не уверен, какая у вас проблема, но, может быть, эти изменения могут помочь?

    const allOptions = [];
    for (let i = 0; i < photoreviewspage; i++) {
      const button = await page.$('#photo_review_paging > a.next');
      await button.click();
      await page.waitFor(500);

      const options = await page.evaluate(() =>
        Array.from(document.querySelectorAll('p.dtl')).map(partner => partner.innerText)
      );

      console.log(options);
      allOptions.push(options);
      console.log(i);
    }
    console.log(allOptions.join('\n'));

В противном случае, пожалуйста, добавьте более подробную информацию, какие данные вы можете получить и какие данные вы должны получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...