Веб-соскоб периодически выполнять работу - PullRequest
0 голосов
/ 11 июля 2019

Я создал скрипт в узле для периодической очистки страницы в виде задания и сохранения данных в виде объекта в MongoDB.Мне нужно выполнять функцию каждые 5 - 15 секунд более или менее.Тем не менее, мой код на данный момент имеет плохую производительность, не могли бы вы дать несколько советов или какую-либо помощь?Исключение TimeError и MaxListenersExceededWarning.Например:

Web scraping to get market data...
Done!
Web scraping to get market data...
Web scraping to get market data...
Web scraping to get market data...
{ TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then         (/home/javier/Workspace/Tradheo/server/node_modules/puppeteer/lib/Lifecycl    eWatcher.js:142:21)
    at <anonymous>
  -- ASYNC --
    at Frame.<anonymous>         (/home/javier/Workspace/Tradheo/server/node_modules/puppeteer/lib/helper.j    s:111:15)
    at Page.goto     (/home/javier/Workspace/Tradheo/server/node_modules/puppeteer/lib/Page.js:629:49)
    at Page.<anonymous>     (/home/javier/Workspace/Tradheo/server/node_modules/puppeteer/lib/helper.j    s:112:23)
    at /home/javier/Workspace/Tradheo/server/scraping.js:69:33
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7) name:     'TimeoutError' }
Web scraping to get market data...

1 Ответ

1 голос
/ 11 июля 2019

Я думаю, проблема в том, что вы не закрываете браузер кукловода.Попробуйте добавить browser.close () в конце цепочки ваших обещаний и в пределах уловки

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
  await page.pdf({path: 'hn.pdf', format: 'A4'});

  await browser.close();
})();

https://www.npmjs.com/package/puppeteer

...