Сила данных в ваших руках с Javascript и APIFY SDK.

Введение

Данные становятся все более и более ценными с течением времени, и это касается не только бизнеса, но и вашей личной жизни.

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

Компании, с другой стороны, могут использовать данные для увеличения продаж, повышения производительности или даже сохранения бесплатности своих услуг в обмен на пользовательские данные (Google, Facebook и т. д.).

Мы собираемся изучить, что такое APIFY SDK, приступим к созданию элементарного поискового робота и экспортируем данные захвата в CSV.

Требования

  • Убунту установил.
  • Некоторые знания о том, как работают веб-запросы.
  • Установлен NodeJS и некоторые базовые знания о его внутренней работе.
  • Понимание HTML.

Почему вы должны изучать веб-скраппинг?

Вам нужны данные? Сеть — это самая большая база данных, которая у вас есть, если вам нужны данные любого типа, вы обязательно найдете их там.

В настоящее время компаниям требуется анализ конкурентов, стратегии прогнозирования следующих продуктов и многое другое. Мир работает на данных, а данные питают искусственный интеллект и машинное обучение.

Что вы можете сделать с очищенными данными?

Если вы профессиональный специалист по данным или любитель науки о данных, отличный способ начать — собрать собственные данные, очистить их и смоделировать.

Для тех, кто не занимается данными, вы можете продавать собранные данные. Существует множество компаний, заинтересованных во всех данных, которые они могут найти. Думайте о данных как о новом золоте. У Кристофера Зиты есть отличная статья о том, как заработать на продаже данных, извлеченных из Интернета.



О чем нужно помнить, прежде чем начать парсинг ⚠️

  • Будьте осторожны со скоростью сканирования. Если сервисы предоставляют вам ценные данные, самое меньшее, что вы можете сделать, это уважительно. Вы же не хотите, чтобы ваш поставщик данных по ошибке подвергся DDOS-атаке и попал в суд, ДОВЕРЬТЕ МНЕ!
  • Используйте человеческие заголовки. Если у вас есть user_agent, равный Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html), вашего бота будет легко распознать.
  • Проверьте, есть ли у службы, которую вы хотите просканировать, API или карта сайта. Используя их API или карту сайта, вы значительно сократите их и свои расходы на трафик (выигрыш-выигрыш).
  • Найдите способы избежать использования браузера (Puppeteer), браузеры требуют большого количества трафика и компьютеров. Каждый запрос будет занимать гораздо больше времени, учитывая, что каждому запросу придется ждать рендеринга страницы.

Почему Апифай?

1. Apify SDK поставляется в комплекте с тремя поисковыми роботами:

Бесбраузерные сканеры:

  • Встроенный BasicCrawler.
  • Cheerio, невероятно быстрый краулер и эффективное использование полосы пропускания.

Безголовый сканер браузера:

  • Puppeteer использует безголовый Chrome для загрузки веб-страниц и извлечения данных, это полезно для сканирования веб-сайтов, требующих выполнения JavaScript.

2. Он использует Javascript, язык Интернета.

3. Apify SDK дает вам возможность хранить данные локально или в своем облачном провайдере.

4. Отличная документация в целом https://sdk.apify.com/docs/api/apify.

5. Простой в использовании.

Настраивать

  • Создать каталог проекта
  • Убедитесь, что у вас установлен NodeJS
  • Установите Apify SDK с помощью команды npm install apify --save
  • Создайте файл внутри каталога вашего проекта с именем index.js

Наш план

  • Оценить https://www.coolblue.nl/en
  • Найдите способы избежать использования сканера на основе браузера, проверьте карту сайта, если есть способ значительно уменьшить количество сделанных запросов.
  • Нашей основной целью будет извлечение всех цен на товары (для простоты мы будем избегать рекламных цен), имен и URL-адресов.
  • Мы не можем забыть самое важное правило УВАЖАТЬ ПОСТАВЩИКОВ ДАННЫХ.

Хорошо, теперь разберем https://www.coolblue.nl/en.

Итак, давайте найдем карту сайта, проверив их robots.txt файл, который можно найти здесь: https://www.coolblue.nl/robots.txt.

Вы должны увидеть что-то вроде этого:

Если вы внимательно посмотрите, то увидите две карты сайта на английском языке:

Это хорошо, мы можем вообще не использовать браузер и напрямую получать чистый список URL-адресов продуктов.

Протестируем их, начиная с https://www.coolblue.nl/sitemap/nl_en/products_1.xml

Хм… Это ведет к другим картам сайта, и, судя по всему, каждая из этих карт сайта является категорией.

Пришло время углубиться и выбрать случайную карту сайта, показанную на изображении выше:
https://www.coolblue.nl/sitemap/nl_en/products/2027_televisie-afstandsbedieningen.xml

Теперь мы в деле 😃. Отображаются HTML-страницы, и это действительно похоже на возможные страницы продукта.

Попробуем первый результат: https://www.coolblue.nl/en/product/575032/one-for-all-urc1910-samsung.html

БАМ! Получается, что их структура карты сайта в первую очередь основана на категориях, за которыми следуют соответствующие продукты этой категории.

Код

  • Видя, что браузер не нужен, я буду использовать сканер Cheerio.
  • Первые два запроса будут на https://www.coolblue.nl/sitemap/nl_en/products_1.xml, https://www.coolblue.nl/sitemap/nl_en/products_2.xml.
  • Каждый запрос будет иметь 10-секундный интервал между ними и параллелизм 2 (уважайте поставщика данных).
  • Выполните рекурсивный обход URL-адресов XML, чтобы получить HTML-ссылки продукта.
  • Классифицируйте URL-адреса XML как страницы категорий и HTML как страницы продуктов.
  • Если продукт классифицируется как страница продукта, сохраните его URL, имя и цену в файле products.csv.

Теперь запустите node index.js, и через 1-2 часа ваш сканер должен собрать все необходимые данные.

⚠️ПОЖАЛУЙСТА, НЕ СНИЖАЙТЕ 10-СЕКУНДНОЕ ВРЕМЯ ОЖИДАНИЯ ЗАПРОСА И НЕ УВЕЛИЧИВАЙТЕ ЧАСТОТУ ОДНОВРЕМЕННОСТИ.⚠️

🚀Поздравляем с вашим первым бесбраузерным краулером Apify