В мире API большинство веб-сайтов предоставляют API для извлечения данных со своих веб-сайтов. Но мы не можем получить все данные, которые нам нужны, из этих API, и нам нужны эти данные для многих целей, например, для анализа данных для повышения производительности других веб-сайтов. Если вы хотите начать новый проект или попытаться добавить новые способы роста существующей компании, вам необходимо получить доступ к огромному объему данных и проанализировать их. Вот тут-то и появляется веб-скрапинг. Как Google сканирует другие сайты и использует это в поисковой системе.

Веб-парсинг - это эффективный и быстрый процесс автоматизации извлечения данных. С помощью веб-скрапинга вы можете извлекать данные с любого веб-сайта, независимо от его размера, на вашем компьютере.

Итак, давайте погрузимся в способы обработки парсинга с помощью nodejs.

Кукловод

Puppeteer - это библиотека Node, которая предоставляет высокоуровневый API для управления Chrome или Chromium по протоколу DevTools. По умолчанию Puppeteer работает без головы, но его можно настроить для работы в полном (не без головы) Chrome или Chromium.

ЧТО ТАКОЕ БЕЗГОЛОВОЕ ????

Безголовый браузер - это браузер без графического интерфейса пользователя (GUI).

Безголовые браузеры обеспечивают автоматическое управление веб-страницей в среде, аналогичной популярным веб-браузерам, но выполняются через интерфейс командной строки. Они особенно полезны для тестирования веб-страниц, поскольку они могут отображать и понимать HTML так же, как браузер, включая элементы стиля и выполнение Javascript.

Кукольника можно использовать для разных целей -

  1. Создать PDF-файл из HTML-страницы.
  2. Очистите данные веб-сайта в JSON.
  3. Делайте скриншоты веб-сайта в формате PDF или в формате изображения.
  4. Тестирование производительности сайта.

Давайте начнем наш базовый пример Кукловода. Мы напишем сценарий, который заставит наш безголовый браузер делать снимок экрана с веб-сайтом.

Сначала установите кукольника командой:

нпм я кукольник

Эта команда устанавливает как Puppeteer, так и Chromium.

Мы будем использовать сайт https://news.ycombinator.com/, который является новостным сайтом. Заголовки всех новостей будем убирать.

Во-первых, если вы проверите исходный код домашней страницы с помощью инструментов разработчика в своем браузере, вы заметите, что на странице перечислены все данные заголовков под тегом a, каждый из которых имеет класс storylink.

Мы будем использовать этот тег, чтобы получить заголовок, как показано ниже.

  • без головы - false означает, что браузер будет работать с интерфейсом, чтобы вы могли наблюдать за выполнением сценария, а true означает, что браузер будет работать в автономном режиме. Однако обратите внимание: если вы хотите развернуть парсер в облаке, установите для headless обратно значение true. Большинство виртуальных машин являются безголовыми и не имеют пользовательского интерфейса, и, следовательно, могут запускать браузер только в автономном режиме.

Метод goto откроет указанную страницу ссылки в браузере Chrome.

page.waitForSelector() будет ожидать, пока тег a, содержащий всю информацию, относящуюся к заголовку новостей, будет отображен в модели DOM, а затем вы вызвали метод page.evaluate. Этот метод получает элемент URL с помощью селектора a.

Используя метод querySelectorAll, мы получаем все элементы в теге привязки, и мы обрезали данные для каждого результата и сохраняли их в массиве. И наконец мы утешили списанные данные.

Запустите код, используя node index.js, и результат будет ниже:

JSDOM

JSDOM - это чистая реализация модели DOM на Javascript, которая будет использоваться в NodeJS, поскольку, как упоминалось ранее, модель DOM недоступна для Node, поэтому JSDOM является наиболее близким из возможных вариантов.

После создания модели DOM можно программно взаимодействовать с веб-приложением или веб-сайтом, который нужно сканировать.

Сначала установите jsdom командой:

нпм я jsdom

Сначала jsdom создаст экземпляр, предоставив ссылку на страницу, теперь для простоты мы создали HTML внутри самого файла.

Затем, используя querySelectorAll, мы выберем все элементы тега p, чем напечатаем первый элемент p. Результат:

Это очень просто и легко реализовать. У нас есть и другие варианты утилизации, например Cheerio. Мы можем воспользоваться многими преимуществами утилизации, используя эти инструменты.

Если вам понравился этот пост, не забудьте поставить ему, поделитесь им с другом, который, по вашему мнению, может извлечь из него пользу, и оставьте комментарий! Следите за новостями в блогах о Flutter, Elixir, React, Angular, Ruby и т. Д.

Спасибо !!