Size: a a a

Node.js — русскоговорящее сообщество

2020 August 14

y

ymdev in Node.js — русскоговорящее сообщество
Hamti
Народ, кто шарит в Puppeteer!
Не могу понять почему у меня не сохраняются айдишники страниц в текстовый файл, вот код:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
   const browser = await puppeteer.launch();
   const page = await browser.newPage();

   const ids = [];

   for (id = 184; id < 200; id++) {
       await page.goto('https://apphx.pscu.com/AP/APCardholder/pages/dsologin?clientId=' + id + '&siteFlag=true');
       let siteId = await page.evaluate (() =>{
if (document.title === "Login") {
           return document.title
       }
})
ids.push(siteId)
   }

   ids.forEach(id => fs.writeFile('ids.txt', id));

   await browser.close();
 })();
за код puppeteer не скажу ничего, а вот за ids.forEach(id => fs.writeFile('ids.txt', id)); можно и поругать)

Первое, не очень понял, зачем ты один и тот же файл просто перезаписываешь
Далее, если ты хотел добиться параллельности записи, то мог это сделать, например так
await Promise.all(ids.map(id => fs.promises.writeFile('ids.txt', id)))
сохранив при этом async/await
источник

H

Hamti in Node.js — русскоговорящее сообщество
Hamti
Народ, кто шарит в Puppeteer!
Не могу понять почему у меня не сохраняются айдишники страниц в текстовый файл, вот код:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
   const browser = await puppeteer.launch();
   const page = await browser.newPage();

   const ids = [];

   for (id = 184; id < 200; id++) {
       await page.goto('https://apphx.pscu.com/AP/APCardholder/pages/dsologin?clientId=' + id + '&siteFlag=true');
       let siteId = await page.evaluate (() =>{
if (document.title === "Login") {
           return document.title
       }
})
ids.push(siteId)
   }

   ids.forEach(id => fs.writeFile('ids.txt', id));

   await browser.close();
 })();
Передай в launch {headless:false}, вообще у тебя странный код, в конце foreach переписываешь файл каждый раз, у тебя в файл попадет  один ид, и не известно ещё какой так как writeFile асинхронный
источник

К

Каренина in Node.js — русскоговорящее сообщество
можно также юзать fs.writeFileSync() но зачем
источник

H

Hamti in Node.js — русскоговорящее сообщество
Каренина
можно также юзать fs.writeFileSync() но зачем
Ну уж лучше appenFileSync
источник

К

Каренина in Node.js — русскоговорящее сообщество
Hamti
Ну уж лучше appenFileSync
ага, еще неплохо новую линию добавлять
источник

H

Hamti in Node.js — русскоговорящее сообщество
Или writeFileSync('ids.txt', ids.join('\r\n'))
источник

F

Finn Eisenberg in Node.js — русскоговорящее сообщество
Странно, скрипт по страницам бежит, и по идеи, должен брать тайтл из хэда, проверяя его, записывать в текстовик, но скрипт просто работает бесконечно...
источник

К

Каренина in Node.js — русскоговорящее сообщество
Finn Eisenberg
Странно, скрипт по страницам бежит, и по идеи, должен брать тайтл из хэда, проверяя его, записывать в текстовик, но скрипт просто работает бесконечно...
код в студию
источник

F

Finn Eisenberg in Node.js — русскоговорящее сообщество
const puppeteer = require('puppeteer');
const fs = require('fs');

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

   const ids = [];

   for (id = 184; id < 200; id++) {
       await page.goto('https://apphx.pscu.com/AP/APCardholder/pages/dsologin?clientId=' + id + '&siteFlag=true');
       let siteId = await page.evaluate (() =>{
           if (document.title === "Login") {
               return document.title;
           }
       });
       ids.push(siteId);
   }

   ids.forEach(id => fs.writeFile('ids.txt', id));

   await browser.close();
 })();
источник

К

Каренина in Node.js — русскоговорящее сообщество
ну как минимум то что мы про writeFile говорили нужно исправить
источник

К

Каренина in Node.js — русскоговорящее сообщество
Hamti
Или writeFileSync('ids.txt', ids.join('\r\n'))
вот ваш вариант, если надо проще
источник

F

Finn Eisenberg in Node.js — русскоговорящее сообщество
Каренина
вот ваш вариант, если надо проще
Вот на это исправил...
источник

y

ymdev in Node.js — русскоговорящее сообщество
Да какая синхронность, вы чего? Зачем тогда промисы заводить было?
await fs.promises.writeFile('ids.txt', ids.join('\n'))
источник

CM

Chingiz Mamiyev in Node.js — русскоговорящее сообщество
ymdev
Да какая синхронность, вы чего? Зачем тогда промисы заводить было?
await fs.promises.writeFile('ids.txt', ids.join('\n'))
+
источник

К

Каренина in Node.js — русскоговорящее сообщество
Finn Eisenberg
const puppeteer = require('puppeteer');
const fs = require('fs');

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

   const ids = [];

   for (id = 184; id < 200; id++) {
       await page.goto('https://apphx.pscu.com/AP/APCardholder/pages/dsologin?clientId=' + id + '&siteFlag=true');
       let siteId = await page.evaluate (() =>{
           if (document.title === "Login") {
               return document.title;
           }
       });
       ids.push(siteId);
   }

   ids.forEach(id => fs.writeFile('ids.txt', id));

   await browser.close();
 })();
а вопрос, вы там сравниваете не является ли документ.тайл === логин, а если да, возвращаете это значение, его же сохраняете в масиив
Зачем вам куча "Login" в файле?
источник

F

Finn Eisenberg in Node.js — русскоговорящее сообщество
Каренина
а вопрос, вы там сравниваете не является ли документ.тайл === логин, а если да, возвращаете это значение, его же сохраняете в масиив
Зачем вам куча "Login" в файле?
Потом я туда буду айди сохранять, мне сначала нужно хоть что нибудь запихнуть в файл, а он у меня даже не создаётся...
источник

К

Каренина in Node.js — русскоговорящее сообщество
я запустила ваш код, файл появляется, сайт который вы пытаетесь открыть выдает какую-то ошибку
источник

СМ

Сергей Мезенцев... in Node.js — русскоговорящее сообщество
Да он просто хочет, чтоб за него всё сделали..  Он с этим вопросом как минимум в еще одном чате
источник

К

Каренина in Node.js — русскоговорящее сообщество
источник

СМ

Сергей Мезенцев... in Node.js — русскоговорящее сообщество
И там ему немного другими словами рассказывают, а в ответ то же самое: "У меня не получается"
источник