Gambit501
Alexander 🇺🇦
Ну жто я для примера юзаю. Вообще конкретная задача клацать по элементам календаря и дожидаться ответа от сервера. Мне вот нужен этот перебор дат из календаря. Как понимаю, там же контекст 1 будет
Alexander 🇺🇦
Получается нельзя сохранить список объектов (элементов меню) и переходить по ним?
Alexander 🇺🇦
Ну да… Но блин, у меня же уже есть весь список ссылок
Alexander 🇺🇦
в смысле href?
Alexander 🇺🇦
Получается в любом случае нужно вызывать goto?
Alexander 🇺🇦
Реальная задач на другом сайте. Там долго тестить, много защит и долго ждать чтобы тестить на нем. Хабр открыл чтобы оттестировать)
Alexander 🇺🇦
Да, так работает, спасибо
Oz
Всем ку. Тренируюсь на puppeter с instagram. При нажатии на залить фото, сессия просто вылетает, вместе с браузером без каких-либо ошибок... Ничего полезного не нагуглил. Кое-где написано, что это сделать попросту нельзя... Не пойму куда копать дальше :(
Oz
К сожалению более детально описать не могу... т.к вылетает до показа ошибок.
Oz
Чем-то напоминает KILL -9 <PID> ... Ладно. Ошибка. Буду думать как достать ошибку. Хотя бы направление уже есть :)
Назар
оно так всегда вылетает, ищи ошибку
Oleksii
Ребят, кроме как browserless никаких вариантов нет запустить в докере puppeteer и подключаться к нему с разных воркеров?
Oleksii
Browserless вылетает постоянно, пробовал менять значения и максимальных одновременных подключений и другие... При чем постоянно разные ошибки. То с докером связь оборвалась, то вкладка закрылась то ещё что-то)
Oleksii
Хорошо бы найти аналог или придётся самому писать...
Oleksii
Без докера всё отлично, но 10 воркеров жрут оперативу как слоны...)
Oleksii
Если бы я не потратил пол месяца на изучение доки - сюда бы не писал
Djhrum
ну так приходит добрый дядя оом киллер и привет :)
Oleksii
Интересно, не костыль же?)
Oleksii
Спс
Oleksii
Вообще сейчас перевёл всё на fetch и максимально прикидываюсь браузером, но в некоторых местах это не спасает...(
Djhrum
как у тебя вообще с загрузкой хоста когда это все работает?
Oleksii
как у тебя вообще с загрузкой хоста когда это все работает?
Да живет какое-то время и умирает. Не мониторил пошагово, но тут не надо быть гадалкой чтобы понимать что 10 инстансов хрома не стоит поднимать просто так. С докером работает хорошо, мониторил - всё стабильно, только спустя какое-то время - начинаются дисконнекты или ошибки.
Oleksii
А эту штуку кто-то пробовал? SDK https://apify.com
Anonymous
Всем привет. Кто знает как выбрать 1 id элемента в puppeteer? .click('.block')[1]
Anonymous
У меня есть 2 дива с классами .block, мне нужно нажать на второй див
Назар
нужно его получить и вызвать .click() на нем, а не на page
Назар
Через getElementsByClassName()?
я через page.$$(“selector”) делал
Anonymous
Понял, спасибо.
Назар
const elements = await page.$$("selector"); elements[1].click();
Назар
раньше не использовал его, гляну доку, неплохая штука, тоже можно так
Alex*
Всем привет! Нужен совет. Есть задача с puppeteer. Сейчас по крону запускается с различными параметрами. Один из параметров это id задачи или логин пользователя. И для каждого id создается свой каталог, как-то так args: ['--user-data-dir=./temp/' + id + '/puppeteer'] надо эту задачу развернуть на VPS. И возникла мысль развернуть его в docker. И запускать по крону, делая запрос на определенный порт докера. Минус в том, что при необходимости headless = false не выйдет. Насколько оправдан запуск puppeteer в контейнере?
Alex*
Удаленно к чему? К ресурсу или к контейнеру с puppetter?
Alex*
Что-то типа отладки, в другом браузере?
Alex*
ok. Погрузимся в тему.
Alex*
А headless = false на случай когда донор начнет защищаться, и может понадобиться поднять на VPS GUI c XFCE например.
Gambit501
Всем привет, объясните мне пожалуйста как такое может быть? или все таки магия существует о_о
Gambit501
Вот этот код возвращает undefined
Gambit501
А вот этот код, возвращает нужный текст
Gambit501
Gambit501
Как так? или мне надо просто идти спать? ZZZZZZZZzzzzz
Gambit501
o_o
Andrey
return или иначе, но тут ничего не делается
Gambit501
ща
Gambit501
я этот код даже писал в браузере в консоли, все ок
Gambit501
он находит, и даже получал с него текст контент, ну в прочем как я и описал во 2 скрине
Gambit501
И так) извольте изучить мой ужас)
Gambit501
Gambit501
а вот что в консоли
Gambit501
Gambit501
но я до этого textContent всегда получал вот так art.textContent
Gambit501
и все было ок
Gambit501
ну то есть 4 вариант получил то что нужно = Промтех
Gambit501
Магия, просто магия...
Gambit501
я просто переустановил винду, и что? теперь оно так стало работать чтоль?)
Andrey
Вот этот код возвращает undefined
if (art) { art.textContent; // Что это значит? Никуда не сохранил, не вернул через return ...
Gambit501
аа, хотя я наверн понял..
Andrey
не знаю где там выше
Andrey
такой код никогда бы и не вернул textContent
Andrey
if (art) return art.textContent; return 'NULL';
Gambit501
мда, я всегда делал так
Gambit501
Gambit501
просто просмотрел этот момент...
Назар
Кто то пробовал puppeter в dart? https://pub.dev/packages/puppeteer. Как там с поддержкой и работой?
Андрей
Привет, ребят. Может кто сталкивался. Каким образом — через событие или параметр в chokidar можно задать лимит на watcher появления файла в папке? https://qna.habr.com/q/739179
Андрей
Привет, спасибо. Проблема такаыя - 30 страниц паралельно парсятся (async/queue либо Promise.all). На каждой из них 5-10 документов. Там своя логика по скачиванию и добавлению в БД. Проблема в том, что сервак за "ddos" как я понял кидает 502 и перестает отдавать файлы. На этот момент приложение висит, насколько я понимаю - в ожидании появления файлов в папке. И я хотел лимитировать это ожидание например 10 минутами, чтобы потушить процесс на случай, если произойдет сбой. Если паршу последовательно, то ошибка тоже возникает. Но реже
Андрей
А есть вариант прекратить вотчинг после появления желаемого файла?
Андрей
Я слежу за каталогом, но ожидаю появления там файла download, игнорируя его название при *.crdownload return new Promise((resolve, reject) => { fs.access(destPath, fs.W_OK, function (err) { if (err) { fs.access(srcPath, fs.W_OK, (err) => { if (err) reject(err); mkdirp(destDir).then(data => { console.log('data_:', data); fs.copyFile(srcPath, destPath, (err) => { if (err) reject(err); console.log(${srcPath} ->\n${destPath}\n\n); }); }); }); } }); resolve('moveFileToStorageIfNotExistsAndClearSrc - OK.'); });
Андрей
Внутри - это в месте, где у меня - console.log('data_:', data); Перед копированием?
Андрей
Спасибо. буду смотреть
Андрей
Только увидел твое сообщение. Снова уперся в ту же проблему, временно решение не помогло. Не подскажешь - где в моем коде стоит разместить логику таймаута? setTimeout (() => fs.unwatchFile()) // хотя тут вроде dir должно быть или setTimeout (() => watcher.unref()) или setTimeout (() => watcher.close()) НЕ знаю какой из вариантов более правильный.
Андрей
Я тут просто не могу понять - где и как вызвать reject. 1) Цель - вызов reject, если файл не грузится в папку более 20 секунд. 2) В одной папке может появиться только один файл с именем download 3) Перед 2) файл иногда называется .crdownload, но после догрузки преобретает имя download (логика не моя, такое поведение puppeteer имеет)
Андрей
Вот именно этот момент не могу отловить (
Андрей
Если бы была, было бы здорово) А так висит на загрузке, пока докер не перезапустишь.
Андрей
Спасибо, попробую. А этот логгер лучше подрубить единой точкой входа (до перебора позиций) или запускать в цикле для каждой позиции (у которой я несколько файлов качаю)?
Андрей
Понял, А вообще эта тема: _transport._ws Она пуппитировкская, или для ее понимания нужно доку хромиума читать?