В данном материале показан пример скрейпинга содержимого сайта Авито с помощью Node.js и Puppeteer. Материал основан на отличной статье “Скрейпинг веб-сайта с помощью Node.js и Puppeteer” с сайта digitalocean.com (автор Gbadebo Bello).
Для работы примера у вас должны быть установлены: node, npm и puppeteer. О том, как это сделать, вы можете посмотреть в материале Gbadebo Bello. Для запуска кода из данного материала был использован node версии 14.21.1 и npm версии 6.14.17.
Всего понадобится создать 5 файлов: package.json, index.js, browser.js, pageController.js, pageScraper.js.
- package.json используется для установки Puppeteer.
- index.js - это основной файл проекта, его стартовая точка, именно он запускается командой npm run start.
- browser.js - файл для создания браузера.
- pageController.js - основной файл логики приложения; запускает функцию scraper(browser, city, category) из файла pageScraper.js.
Содержимое всех файлов смотрите ниже.
Функция scraper(browser, city, category) в качестве параметров принимает название города и категории. В данном примере используется город ekaterinburg и категория kvartiry. Используя эти параметры, функция scraper() формирует ссылку к странице сайта Авито: www.avito.ru/ekaterinburg/kvartiry. После чего со страницы собирается список ссылок, далее осуществляется переход по каждой ссылке и выбирается нужная информация (в данном примере это: заголовок, цена, ссылка на картинку, описание). Собранная информация выводится в консоль, а также сохраняется в файл data.json (создаваемый автоматически).
Файлы проекта на GitHub Gist:
Материал с сайта phpnick.ru. Ссылка на материал - https://phpnick.ru/posts/category/js/82