Nikita
Он не скачивает его. Ну в докер точно не скачивает. Ща попробую на локалке провернуть, но шансов нету
Nikita
на локалке не работает. Просто ничего не происходит. ни в докере, ни на локалке. Просто ничего. ни скачивания, ни ошибки, ничего вообще. в хэдлесс режиме, ессесна
Nikita
//Начинаем скачивание await page.waitForSelector('#btnPrintId_OsagoDesktop > span').then(el => el.click()); await spa.waitForClosePreloader('ждем всплывашку для выбора типа полиса'); await page.waitForSelector('#tblResult_SelectItemForm > div.v-scrollable.v-table-body-wrapper.v-table-body'); await page.focus('#tblResult_SelectItemForm > div.v-scrollable.v-table-body-wrapper.v-table-body'); await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowDown'); const client = await page.target().createCDPSession(); await client.send("Page.setDownloadBehavior", { behavior: "allow", downloadPath: "downloads/pdf.pdf", }); // const cookie = await page.cookies(); // // browser.on('targetcreated', async target => { // let url = target.url(); // if (url.endsWith('.pdf')) { // console.log('type', target.type()); // console.log('type', await target.page().then(page=>page.cookies())); // await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './pdf.pdf'}); // console.info('targetcreated', url); // // const help = await page.goto(url).then(); // const buffer = help.buffer(); // fs.writeFileSync('./pdf.pdf', buffer); // // }}); await page.keyboard.press('Enter'); await page.waitFor(5000);
Nikita
щас попробую твой, ток выйду перекурю
Nikita
Да, я сначала без /pdf пробовал
Nikita
Потом добавил
Nikita
Там где нажатие кнопок, там выбор пункта "получить копию" Клики там не работают. Эт какая то залоченая кривая фреймуха
Pavel
@ejnshtein нужны твои скилы по отфутболиванию этого школьника)
Pavel
У него ничего не работает и давай готовый ответ, быстра.
倫太郎
倫太郎
Шо
Nikita
@ejnshtein нужны твои скилы по отфутболиванию этого школьника)
Вот щас обидно было. Я сначала все перепробовал, что смог найти и придумать, потом уже написал. Не хочешь помочь, так и скажи, я не буду спрашивать. Зачем грубить то
Nikita
Ты скинул портянку с коментами)
Меня попросили скинуть код, вот я портянку и залил
Nikita
Мне не просто для себя, мне для работы надо. Я бота пишу, и он должен эту штуку в конце скачать и отдать бэку. Поэтому тестить в тепличных условиях не вариант.
Nikita
Окей, учту, простите
Nikita
targetcreated не работает без головы. Поэтому полтора дня работы и эксперементов можно выкинуть.
Nikita
Nikita
эх, ладно. Попробую теперь без головы поиграть с запросами, подменить пост запрос на свой и ждать в ответ пдф. Если не прокатит, проплачу ночь и потом сделаю скачивание через почту :( В любом случае за помощь спасибо)
Nikita
Проблема в конкретном случае. Это скорее исключение. как такового пдф не существует на момент отправки запроса. Улетает запрос с телом json формируется пдф и возвращается ответом не ссылка, а конструктор для ссылки. я могу выдернуть содержимое ответа и собрать через регулярки ссылку и по ней пройти. Тогда попаду на pdf файл
Nikita
да. этот запрос я вижу. Это пост запрос
Nikita
Проблемы нету. Но мне вернется в ответе не файл, а конструктор
Nikita
если я правильно во всем разробрался
Nikita
for(;;);[{"syncId": 306, "changes" : [["change",{"pid":"0"},["0",{"id":"0","location":"https:\/\/ooopf.ru\/AlfaPolicy\/#!"},["open",{"src":"app:\/\/APP\/global\/0\/legacy\/0\/Понкратов Александр Николаевич- копия.pdf","name":"_blank","popup":false}]]]], "state":{}, "types":{"0":"0"}, "hierarchy":{"0":["1"]}, "rpc" : [], "meta" : {}, "resources" : {}, "timings":[1471, 1]}] Вот такое возвращается После этого открывается pdf в новой вкладке
Nikita
никаких промежутков. Сразу. Такой ответ и сразу же открывается вкладка
Nikita
я оттуда только что ответ и скопировал) больше ничего. Это крайний запрос-ответ
Nikita
Этот запрос может не отображаться в DevTools? такое возможно?
Nikita
Видимо возможно. Поставил отловщик запросов на url.pdf ничего. ничего не этот урл не улетает вообще.
Nikita
ладно, хер с ним. спасибо большое) Помечу этот случай себе в красный блокнотик, вернусь к нему может быть когда-нибудь.
Nikita
Прости за совсем ламерский вопрос, но я такую фукнцию ни разу не видел. И не очень понимаю как ее запустить.
Nikita
вот такая штука вылезла урл сократил, что бы не бесить никого :) {"method":"Page.windowOpen","params":{"url":"https://alf.pdf","windowName":"_blank","windowFeatures":["menubar","toolbar","status","scrollbars","resizable"],"userGesture":true},"sessionId":"3432FDA2B5977DAB45B082BCCBDB1192"}'
Nikita
мне чуть-чуть объясни пожалуйста, что он мне показал вообще? Я не очень понимаю. Это похоже на ответ типа "открыть новую вкладку и перейти по ссылке" и параметры перехода
Nikita
ну, должен но не обязан, судя по всему :D окэй, щас покапаемся
Pavel
можете сностить эту сагу том что подключается 1 cdp сессия на 1 страницу)
Pavel
хмм, ну ок.
Pavel
имхо просто евенты были в новой странице, а не старой, вот и не ловились.
Nikita
имхо просто евенты были в новой странице, а не старой, вот и не ловились.
Если любопытно, могу скинуть реквесты с обеих страниц. Новую страницу я давным давно отловил, и могу с нее тоже сдернуть все реквесты) их там просто как бы нету, но повесить не проблема) Ток из дома уже, попозже
Pavel
Pavel
в скачивании файлов не может быть баги, ты просто делаешь не то.
Nikita
в скачивании файлов не может быть баги, ты просто делаешь не то.
Я не спорю, что просто сам доехать не могу. Мне не хватает знаний и опыта, я ещё месяц назад понятия не имел, что такое nodejs, потому и не претендую на источник истины в последней инстанции.
Nikita
Я рабочий ноутбук взял на выходные домой, попробую сам покапаться, может рожу чего интересного. Однако огромное спасибо за проявленный интерес к моей проблеме)
Андрей
Привет, ребят https://qna.habr.com/q/728083 Почему в цикле не отрабатывает блок после sleep?
Mika
Господа, добрый день! Кто нибудь сталкивался с задачей отправки скриншотов в тегерамм?
Mika
Спасибо!
Alex*
Пожалуйста. ) Я стараюсь разделять такие процессы. Вроде сейчас микросервисы в тренде. ) Сделайте отдельно сервис забирающий скриншоты и складывающий в папку и другой сервис сканирующий папку и оправляющий в телеграм . Как-то так.
1
Пожалуйста. ) Я стараюсь разделять такие процессы. Вроде сейчас микросервисы в тренде. ) Сделайте отдельно сервис забирающий скриншоты и складывающий в папку и другой сервис сканирующий папку и оправляющий в телеграм . Как-то так.
Куски кода надёрганы из разных файлов, чтобы человек понимал, как работает и видел реальный код. А зачем такие колёса, когда скриншот сразу можно сохранить в файл и отправить в Телеграм let buffer = await page.screenshot({path: 'screenshot.png', fullPage: true}); telegram('text', channel, buffer)
Mika
В целом задача стоит такая: нужно заходить на сайт, делать скриншот области, отправить в телеграмм. Человек будет "отвечать" на сообщение и требуется вводить все это в инпут. Справится ли puppeteer с этой задачей? раньше использовал phantonjs, dalekjs
John
аналог капчи чтоли?
Alex*
1
Это не колеса. ) Просто есть уже готовые два модуля и привычка не скрещивать ежа с ужом, пусть они живут каждый по своему. Не буду спорить, я лишь предложил одно из решений.
Там по 1-2 строчки )) А так да, у меня оформлено всё отдельно, чтобы можно было использовать для других задач, тупо подключив модуль module.exports = telegram; const { telegram } = require('./telegram');
Mika
Распознаватель то не нужен, нужно именно отправлять капчу в телеграмм и принимать ответное сообщение
1
Распознаватель то не нужен, нужно именно отправлять капчу в телеграмм и принимать ответное сообщение
Всё делается с помощью node-telegram-bot-api отправка, приём сообщений, а дальше обрабатывайте с помощью JS.
Андрей
Привет, ребят, подскажите пож: Как сделать вывод на консоль в правильной кодировке для кириллицы у puppeteer для кириллицы? https://qna.habr.com/q/729815
Андрей
Спасибо. Как корректней будет это сделать? 1) page.setExtraHTTPHeaders({ 'Accept-Charset': 'utf-8', 'Content-Type': 'text/html; charset=utf-8', }) Или 2) const response = await page.goto('https://hk.appledaily.com/realtime/realtimenews/20180228/local'); await page.setContent((await response.buffer()).toString('utf8'));
Андрей
А кодировку так получить, правильно понимаю? document.querySelectorAll("head > meta[name='charset']")[0] ... ;
Андрей
Спасибо!
Андрей
Привет, ребят, не подскажете - куда копать. Хочу выявлять расширение скачанных puppeteer-ом файлов с именем download.
Gambit501
Всем привет, кому не сложно проверить вот этот сайт https://tv.yandex.ru/ корректность загрузки его в режиме headless: false
Gambit501
просто у меня при первой загрузке сайт выглядит вот так
Gambit501
Gambit501
Но! стоит либо вручную нажать (обновить) либо через page reload обновить то страница загружается нормально
Gambit501
Вот после перезагрузки
Gambit501
Gambit501
аргументы запуска, юзерагенты менял, толку 0
Gambit501
и StealthPlugin тоже убирал, запускал обычный кукловод тоже самое
Gambit501
нет
Gambit501
щас попробую неск способов
Андрей
Потому что он так по умолчанию называется почемуто. Пробовал разные фишки, типа linkNode.setAttribute('download', 'TrueName') Имя все тоже. Проблема в том, что у ссылки на скачиваемый файл href=#. НЕмного повеловипедил и уперся в вотчер: Как в node Js или chokidar сделать слежение за созданием файла и продолжить скрипт только после его создания? https://qna.habr.com/q/731375
Gambit501
Привет всем
Gambit501
подскажите, как обработать Null? уже и с проверкой пробовал, все равно останавливает выполнение кода на ошибке этой
Gambit501
Gambit501
ну Нулл так Нулл пофиг, как продолжить выполнение скрипта?
Gambit501
просто иногда на страницах сайта(который паршу) бывает нет нужного атрибута* ну и фиг с ним
Gambit501
как мне просто возвращать другое значение?
1
как мне просто возвращать другое значение?
Заключить код в try catch try { page.evaluate(() => { // Выполняемый код }); } catch (err) { // Код при ошибке console.log(err); }