ну вроде реализовано годно, ип без лишниз деталей и без воды , коей до часа подобные кейсы раздувают, и у меня кним нет претензий на часовом ролике очевидно больше реклам казали чем в 20 минутном. с учетом выпуска материала до отключения монетизации ютуба для нашего региона , прям мое почтение . жаль что канал не развиваетя, но если вдруг кейсы про нейронки например в связке с нодой выйдут то я буду знать)
Все отлично, буду прорабатывать полученную инфу. Формат записи понравился. Можно сделать сканирование букмекерских контор ))) и искать вилки. Автор, пили дальше ... Например, интернет-магазин на node js. Лайк и спасибо.
Делаю в 2022 году. Нода ругается на "import" Ну и не разобран момент когда период выпуска "2018 - н.в." В видео видно что "н.в." парсится как NaN, а по идее "н.в." - это текущий год (что то типа (new Date).getfullYear())
А классификаторы можно как - то спарсить из фильтров? Столкнулся с проблемой - при попытке простмотреть элемент выпадающего списка и при любом клике этот самый список исчезает из разметки.
На серьезных сайтах делают защиту от парсинга, она работает примерно так: при загрузке страницы сервер отправляет запрос клиенту "с просьбой " указать номер версии и название браузера, если в ответе будет браузер отличный от (мозилла, хром и т.п) то страница загрузится не полностью, или вообще не загрузится.По этому такой парсер будет работь не везде.
Я правильно понимаю, что каждый раз, когда мы идём на карточку тачки с деталями, открывается и закрывается инстанс браузера? Это кажется слишком затратным, не?
Работает, парсит, все здорово. Вопрос: почему так медленно? Список ссылок получает достаточно быстро, а потом на обработке каждой ссылки долго вычисляет и записывает 3 параметра.
В том виде, в котором сейчас скрапер, он делает запросы последовательно на каждую страницу, отсюда и невысокая скорость, тут дело не в количестве параметров, которые он берет с каждой из страниц а именно в последовательных запросах к каждой странице.
@@duckduckjs Спасибо. Понятно, что цель ролика показать возможности модулей и т.п. Кстати, надо отметить, что цель достигнута ) Просто стал повторять, скорость не устроила и для получения параметров использовал тот же модуль needle. В общем, изменил уже половину, оставил только структуру. Структура хороша, не буду менять.
Что делать, если данные на странице обновились, но программа выводит в консоль текст как при первом запросе? Даже спустя время или после перезапуска. Например был тег #4127, стал #1234, но программа все равно выводит #4127.
Дмитрий, вы можете посмотреть все примеры кода здесь - github.com/alexej3ajtsev/nodejs-scrapper Просто выполните след. команды: mkdir {любое название} git clone git@github.com:alexej3ajtsev/nodejs-scrapper.git {любое название} cd {любое название} npm install mkdir data npm start Вы сможете посмотреть, что скрапер работает, а также сможете сравнить код написанный вами с кодом в соответствующих файлах созданной папки
Крутое видео, но у меня хрен работает > scrapper@1.0.0 start C:\Users\dvoro\Documents odejs-scrapper-master > npm run clean && babel-node index.js > scrapper@1.0.0 clean C:\Users\dvoro\Documents odejs-scrapper-master > rm -rf data && mkdir data "rm" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! scrapper@1.0.0 clean: `rm -rf data && mkdir data ` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the scrapper@1.0.0 clean script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\dvoro\AppData\Roaming pm-cache\_logs\2021-03-08T15_25_52_607Z-debug.log npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! scrapper@1.0.0 start: `npm run clean && babel-node index.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the scrapper@1.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\dvoro\AppData\Roaming pm-cache\_logs\2021-03-08T15_25_52_627Z-debug.log
ну вроде реализовано годно, ип без лишниз деталей и без воды , коей до часа подобные кейсы раздувают, и у меня кним нет претензий на часовом ролике очевидно больше реклам казали чем в 20 минутном.
с учетом выпуска материала до отключения монетизации ютуба для нашего региона , прям мое почтение .
жаль что канал не развиваетя, но если вдруг кейсы про нейронки например в связке с нодой выйдут то я буду знать)
уверен это самая популярная пратика разработки на юубе как минимум до конца лета
Шикарно! Только прошу, в следующий раз делай шрифт чуть больше)
Респект за видео, очень хорошо объясняешь, без воды - чётко и по делу. Продолжай!
Отличный контент. Ждём новое видео👍
Видос который я искал)
Все отлично, буду прорабатывать полученную инфу. Формат записи понравился. Можно сделать сканирование букмекерских контор ))) и искать вилки. Автор, пили дальше ... Например, интернет-магазин на node js. Лайк и спасибо.
Топовый контент, подписался.
Спасибо за видос, чётко объяснил всё.
Спасибо за контент, теперь иду в травматологию, лечить треснувший череп из-за обилия непонятной инфы.
Братишь спасибо
больше парсинга с помощью puppeteer
Скоро будет видос, в котором добавлю многопоточность этому парсеру, работать будет быстрей 💨
Круто и интересно, спасибо!
Спасибо бро подача супер
По стилю напомнило SORAX уроки.
нену годнота же, лайк, подписка!. Давай теперь пиртупир чат на вебсокетах
Делаю в 2022 году. Нода ругается на "import"
Ну и не разобран момент когда период выпуска "2018 - н.в."
В видео видно что "н.в." парсится как NaN, а по идее "н.в." - это текущий год (что то типа (new Date).getfullYear())
А классификаторы можно как - то спарсить из фильтров?
Столкнулся с проблемой - при попытке простмотреть элемент выпадающего списка и при любом клике этот самый список исчезает из разметки.
На серьезных сайтах делают защиту от парсинга, она работает примерно так: при загрузке страницы сервер отправляет запрос клиенту "с просьбой " указать номер версии и название браузера, если в ответе будет браузер отличный от (мозилла, хром и т.п) то страница загрузится не полностью, или вообще не загрузится.По этому такой парсер будет работь не везде.
puppeteer работает на базе хромиума, и кто мешает послать заголовки с кастомным юзерагентом?
Я правильно понимаю, что каждый раз, когда мы идём на карточку тачки с деталями, открывается и закрывается инстанс браузера? Это кажется слишком затратным, не?
а как парсить динамично обновляющиеся страницы(SPA), где стили обновляются с каждым новым событием, а инфа содержится в атрибутах и дочерних спанах?
Привет, не знаете с помощью чего можно спарсить ссылки на файлы, которые не фигурируют в DOM, но видны во вкладке Network?
А можно данный скрипт развернуть к примеру на своём сервере и парсить данные себе на сайт , когда они будут обновляться ?
Работает, парсит, все здорово. Вопрос: почему так медленно? Список ссылок получает достаточно быстро, а потом на обработке каждой ссылки долго вычисляет и записывает 3 параметра.
В том виде, в котором сейчас скрапер, он делает запросы последовательно на каждую страницу, отсюда и невысокая скорость, тут дело не в количестве параметров, которые он берет с каждой из страниц а именно в последовательных запросах к каждой странице.
@@duckduckjs Спасибо. Понятно, что цель ролика показать возможности модулей и т.п. Кстати, надо отметить, что цель достигнута ) Просто стал повторять, скорость не устроила и для получения параметров использовал тот же модуль needle. В общем, изменил уже половину, оставил только структуру. Структура хороша, не буду менять.
@@seniorqa_auto5367 Рад что видео понравилось, скоро выйдет новое про чат на React и Socket.IO с использованием хуков и styled-components
@@duckduckjs Отлично. Жду ) Да, видео понравилось. Коротко, сжато, все по делу. Вместе с тем, все понятно. Круто.
Спасибо большое, такое вопрос, а если итераций в цикле - сотни, то есть вариант подчищать за собой собственные вкладки и повлияет ли это на память?
Andrey Dmitriyev после того как произошло посещение, браузер закрывается
а зачем puppeteer если можно просто get запросом получить html со страницы?
Ну так это же тупые мартышки, которые где-то увидели и повторяют. Если не требуется имитировать действия пользователя, то puppeteer нахрен не нужен.
А что делать если кодировка таргетовой страницы win1251 и результат получается абракадабра? Со страницами utf-8 все работает нормально.
Что делать, если данные на странице обновились, но программа выводит в консоль текст как при первом запросе? Даже спустя время или после перезапуска. Например был тег #4127, стал #1234, но программа все равно выводит #4127.
Почему в коде везде "cherio" вместо "cheerio"?
+1 👍
Какой дистрибутив используешь?
Twelve, Ubuntu 18.04, немного кастомизировал внешний вид только
почему то не хочет заполняться carsItems, вроде pageContent в консоле отображается как положено в виде html файла, только html не сформирован.
Дмитрий, вы можете посмотреть все примеры кода здесь - github.com/alexej3ajtsev/nodejs-scrapper
Просто выполните след. команды:
mkdir {любое название}
git clone git@github.com:alexej3ajtsev/nodejs-scrapper.git {любое название}
cd {любое название}
npm install
mkdir data
npm start
Вы сможете посмотреть, что скрапер работает, а также сможете сравнить код написанный вами с кодом в соответствующих файлах созданной папки
@@duckduckjs к сожалению не работает, но все равно спасибо за показанный подход
@@Dmitriy15486 1. Чтобы заработало надо в проект добавить пустую папку data.
@@seniorqa_auto5367 все добавлено, как я вижу, проблемо в том, что загружается не полностью сформированный html
@@Dmitriy15486 Загрузку html url = auto.ru/catalog/cars/all/?page_num=1
проверил здесь (puppeteer.js)
export async function getPageContent(url) {
console.log(' url = ', url)
try {
const browser = await puppeteer.launch(LAUNCH_PUPPETEER_OPTS)
const page = await browser.newPage()
await page.goto(url, PAGE_PUPPETEER_OPTS)
const content = await page.content()
console.log(' content = ', content)
browser.close()
Вроде все полностью грузится.
Где новые видосы?
Не видно ничего, шрифт прибавил бы )
Крутое видео, но у меня хрен работает
> scrapper@1.0.0 start C:\Users\dvoro\Documents
odejs-scrapper-master
> npm run clean && babel-node index.js
> scrapper@1.0.0 clean C:\Users\dvoro\Documents
odejs-scrapper-master
> rm -rf data && mkdir data
"rm" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! scrapper@1.0.0 clean: `rm -rf data && mkdir data `
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the scrapper@1.0.0 clean script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\dvoro\AppData\Roaming
pm-cache\_logs\2021-03-08T15_25_52_607Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! scrapper@1.0.0 start: `npm run clean && babel-node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the scrapper@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\dvoro\AppData\Roaming
pm-cache\_logs\2021-03-08T15_25_52_627Z-debug.log
ты консольные команды линукса в виндус пишешь
DUCK DUCK JS: почему все так мелко, нехрена ж не видно
7:08
Автор, подтяни английский. А то аж вздрогнул от "чалк".