Bogdan
вообщем индустриальные кравлеры это всегда кластеры, очереди сообщений, и дата пайплайны.
Sergey
@bo_one благодарю за ответ
Bogdan
в linkedin при регистрации акков какой-то рандом будто, никто не в курсе от чего зависит, дадут тебе капчу или верификацию телефона? Какие-либо идеи?
Bogdan
Обработать оба варианта. ) Номер на виртуальной АТС ~ $2
Виртуальную не принимает. Вообщем прокси похоже захламили мои.
Alex*
Виртуальную не принимает. Вообщем прокси похоже захламили мои.
Не номер виртуальный, а номер на виртуальной АТС.
Bogdan
Не номер виртуальный, а номер на виртуальной АТС.
понял, ну в любом случае это проще через прокси делать.
Bogdan
он с чистого IP по капче пускает
Bogdan
телефоны кстати дешевле есть https://www.smspool.net я правда еще не пробовал но вроде норм
Bogdan
кто-нибудь пробовал?
Alex*
Всем привет. Никто не парсил карточки WB в личном кабинете клиента? Не могу добиться стабильного получения данных из этого tooltip
Alex*
Alex*
почему?Опиши поведение
Навожу курсор, всплывает тултип, парсим html. Стал сохранять скришоты, у тех что не берет последнюю строку - тултипа вообще нет. Хотя там обычный hover
Bogdan
может он во фрейме грузится?
Bogdan
Навожу курсор, всплывает тултип, парсим html. Стал сохранять скришоты, у тех что не берет последнюю строку - тултипа вообще нет. Хотя там обычный hover
если сам элемент визуально появляется, и все кроме этого элемента есть в html то скорее всгео через фрейм они цену грузят.
Alex*
Вроде нет.
Bogdan
Вроде нет.
через devTool парсится?
Alex*
через devTool парсится?
Вообще он парсится. Но в 10% скидка покупателя не забирается.
Bogdan
или может селектор они меняют
Bogdan
динамически
Bogdan
или поставь таймаут, может он не успевает прогрузится
Bogdan
сделай await page.content() убедись что цена присутствует в html страницы. Если все на месте значит ищи селекторы(где-то ошибка), если нету то значит таймауты/фреймы
Bogdan
Я ищу handler, потом забираю html элемента
https://chrome.google.com/webstore/detail/ranorex-selocity/ocgghcnnjekfpbmafindjmijdpopafoe?hl=en вот этот плагин неплохо помогает найти правильный селектор.
Bogdan
если в 10% не забирается то вероятно гдето меняется селектор динамически.
Alex
подскажите как получить значение innertext через xpath c# ?
Даниил
Приветствую, сейчас работаю с puppeteer, необходимо войти в тикток по куке и нажать пару кнопок, проблема в том что при загрузке сайта, попытер все еще не видит селлекторы.
Даниил
что делать? это защита от парсинга или я криворукий?
Даниил
Даниил
если пингую на хабр то все ок, а если тик ток то выбивает ошибку
Даниил
причем именно на моменте загрузки видео, в остальных местах этот код работает
Даниил
как это решить?
Bogdan
если пингую на хабр то все ок, а если тик ток то выбивает ошибку
Что ты имеешь ввиду под пингуешь? Причём тут Хабр?
Bogdan
Проверь не находиться ли нужный селектор во Фрейме
Если не фрейм то скорее всего селектор не правильно написал.
Даниил
Проверь не находиться ли нужный селектор во Фрейме
как пример что с остальными сайтами этот код работает
Даниил
Что ты имеешь ввиду под пингуешь? Причём тут Хабр?
пмнгую всмвсле делаю page.goto на него
Vitaly
Всем привет. Не могу решить на первый взгляд простую проблему. Не получается обратиться к инпуту ни с помощью копирования селекторов, ни с помощью класса... Нужно вставить пароль в поле... Но пуппитер этого не делает.. помогите выяснить в чем дело.
Vitaly
Vitaly
может там iframe?
что делать в этом случае?? не пойму
Назар
что делать в этом случае?? не пойму
ну есть на странице iframe?
Vitaly
вроде нет
Alex*
я копирую селекторы прямо из тулзов
Убедитесь, что, то что вы копируете, видит и puppetter.
Vitaly
Убедитесь, что, то что вы копируете, видит и puppetter.
я не могу понять как это проверить...
Alex*
я не могу понять как это проверить...
const selectorParent = '.vkc__TextField__wrapper' const parentHTML = await page.$eval(selectorParent, (element) => { return element.innerHTML }) console.log(parentHTML)
Alex*
Ну и выше по предкам.
Alex*
И данные в input можно занести через click() и type()
Vitaly
И данные в input можно занести через click() и type()
это как? метод type() вообще в документации не нашел
Alex*
https://pptr.dev/next/api/puppeteer.page.type
Vitaly
https://pptr.dev/api/puppeteer.elementhandle.type
решил проблему, обратившись к элементу вот таким способом await page.$eval('input[name="password"]', (elem) =>... я еще не очень хорошо знаком с синтаксисом... не знал что так можно
gud3
может там iframe?
Можно ли кликнуть на кнопку внутри айфрейм?
Назар
Можно ли кликнуть на кнопку внутри айфрейм?
можно. Просто нужно выбрать его вместо page
gud3
Спасибо 👍
gud3
Кто-то может подсказать что за ошибка?
Alex*
Кто-то может подсказать что за ошибка?
Покажите как вы нашли фрэйм. А поиск ошибок по классике - комментируйте код, пока не пропадет ошибка. Затем код при котором ошибка появляется кидайте сюда. )
Winnie
https://github.com/berstend/puppeteer-extra/issues/196
Winnie
https://github.com/berstend/puppeteer-extra/issues/196
Есть ли способ заставить puppeteer выбирать разные пользовательские агенты?
Tofa
Скачиваешь базу агентов, запихуевпешь в массив, и потом берешь рандомный элемент из массива
Winnie
Скачиваешь базу агентов, запихуевпешь в массив, и потом берешь рандомный элемент из массива
Пожалуйста, можете ли вы продемонстрировать это в коде для меня
Алим
Алим
Алим
Ребят кто подскажет, пытаюсь получить данные с сайта, но почему то не устанавливаются заголовки. Отслеживаю события Fetch.requestPaused, и модифицирую заголовки, добавляю отсутствующие. В связи с этим возникает проблема (Provisional headers are shown)
Алим
const options = { setViewport: { width: 1240, height: 680 }, uri: 'https://ssyoutube.com/' }; let browser = await puppeteer.launch({ headless: false, executablePath: '/bin/google-chrome', slowMo: 10 }); let page = await browser.newPage(); await page.setViewport(options.setViewport) await page.goto(options.uri, { waitUntil: 'load', timeout: 0, }); await page.setRequestInterception(true); const selectorSSYoutube = 'input[id="id_url"]'; const value = 'https://www.youtube.com/watch?v=z4BK4qVHWW8' await page.waitForSelector(selectorSSYoutube) await page.focus(selectorSSYoutube) await page.keyboard.type(value) const session = await page.target().createCDPSession(); await session.send('Fetch.enable'); const headersArray = (headers) => { const result = []; for (const name in headers) { if (!Object.is(headers[name], undefined)) result.push({name, value: headers[name] + ''}); } return result; } session.on('Fetch.requestPaused', async (event) => { const headersModified = event.request.headers; headersModified['sec-fetch-mode'] = 'cors'; headersModified['sec-fetch-site'] = 'same-origin'; const parameters = { requestId: event.requestId, headers: headersArray(headersModified), } console.log(parameters.headers) await session.send('Fetch.continueRequest', parameters); }); await page.keyboard.down('Enter') const finalResponse = await page.waitForResponse('https://ssyoutube.com/api/convert', { timeout: 500000000}) const response = await finalResponse.json(); await page.close(); await browser.close();
Nik
Шагаю домой
Nik
Я дома
Nik
)
Shokhboz
Привет, ребята как можно получать permissions для webcam и mic на puppeteer?
Andrey
https://pptr.dev/next/api/puppeteer.browsercontext.overridepermissions
Winnie
Как удалить «Chrome контролируется программным обеспечением для автоматизированного тестирования» в puppeteer