Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. let ingnoredUrls = [];
  2. let targetUrls = [];
  3. let urlsQueue = [...document.querySelectorAll('a')].map(url => url.href).filter(url => !ingnoredUrls.includes(url));
  4. let urlIterator = 0;
  5.  
  6. parseUrl(urlsQueue[urlIterator]);
  7.  
  8. function parseUrl(url) {
  9. console.log('Попытка спарсить страницу: ' + url + ' Порядковый номер ' + urlIterator);
  10. if (/^tel/.test(url)) {
  11. urlIterator++;
  12. parseUrl(urlsQueue[urlIterator]);
  13. } else {
  14. let newWindow = window.open(url);
  15. let initTime = Date.now();
  16. let interval = setInterval(() => {
  17. if (((Date.now() - initTime) / 1000) > 300) {
  18. console.log('Время ожидание превышено (5 минут), переходим к следующей');
  19. clearInterval(interval);
  20. urlIterator++;
  21. parseUrl(urlsQueue[urlIterator]);
  22. newWindow.close();
  23. }
  24. }, 1000);
  25. newWindow.addEventListener('load', () => {
  26. setTimeout(() => {
  27. let newTargetUrls = document.querySelectorAll('.js-openMunchkinCouponEventModal:not(.hidden)');
  28. if (newTargetUrls.length) {
  29. targetUrls.push(url);
  30. }
  31. addNewUrlsInQueue([...document.querySelectorAll('a')].map(url => url.href).filter(url => !ingnoredUrls.includes(url)));
  32. urlIterator++;
  33. console.log('Найдено страниц с промокодом: ' + targetUrls.length);
  34. if (targetUrls.length) {
  35. console.log('Массив страниц с промокодами: ' + targetUrls)
  36. }
  37. clearInterval(interval);
  38. parseUrl(urlsQueue[urlIterator]);
  39. newWindow.close();
  40. }, 1500)
  41. });
  42. }
  43. }
  44.  
  45. function addNewUrlsInQueue(urls) {
  46. urlsQueue = [...urlsQueue, urls.filter(url => urlsQueue.includes(url))]
  47. }
  48.  
  49. //Если скрипт остановился или нужно прервать на время то можно узнать пройденные ссылки с помощью команды urlsQueue.slice(0, urlIterator) и вставить их в переменную ingnoredUrls чтобы не проходить второй раз
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement