EN DE UK RU
Email

Как бесплатно собирать данные с Amazon

KAVUNKA
Персональная поисковая система / мощные краулеры / быстрый WEB-скрейпинг
Попробовать бесплатно
В этом руководстве я покажу, как получать данные о товарах с Amazon. Перед парсингом любого сайта нужно проверить, какие данные мы получим, если сделаем запрос с помощью curl. Зачем это нужно:
  • использование JavaScript Rendering заметно снижает скорость сканирования;
  • это создаёт дополнительную нагрузку на сервер;
  • сканирование будет выполняться в один поток.
Проверим Amazon на примере https://www.amazon.com/TP-Link-AC1750-Smart...
curl -A " Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0" https://www.amazon.com/TP-Link-AC1750-Smart-WiFi-Router/dp/B079JD7F7G/

В результате мы получили HTML-страницу с заголовком <title> "Sorry! Something went wrong!". Похоже, без JavaScript Rendering здесь не обойтись.

Что такое JavaScript Rendering?

JavaScript — это язык программирования для управления элементами веб-страницы; скрипты на JavaScript могут загружать данные в объекты из сторонних источников через AJAX. Rendering — это отображение, прорисовка и вывод информации в браузере. Таким образом, JavaScript Rendering позволяет получить полноценный HTML-код страницы с текстовым описанием товара и его фотографиями.
Чтобы успешно получать данные с Amazon, нам нужно использовать браузер, который будет обрабатывать JavaScript-скрипты. Возникает важный вопрос: как заставить браузер (Firefox, Chrome или Opera) работать автоматически? Для этого существует технология Selenium WebDriver. Если вы хотите использовать поисковую систему Kavunka для скрейпинга, установка Selenium WebDriver и браузера Firefox выполняется во время развёртывания поисковой системы на сервере.
Теперь посмотрим на поля, которые будем парсить в этом примере:
  • NAME — название товара
  • BRAND — название бренда
  • CAT — категория, к которой относится товар
  • CATURL — URL-адрес категории
  • IMG — основное изображение товара
  • AIMGS — дополнительные изображения
  • PRICE — цена
  • RATING — рейтинг (звёзды)
  • DSCR — описание товара
Далее для каждого поля нужно создать регулярные выражения. Создавать и тестировать регулярные выражения онлайн можно на этой странице или на вкладке TESTER в панели управления поисковой системы Kavunka. Для быстрого создания регулярных выражений используем "Regular expressions designer". Нажимаем и получаем диалоговое окно с полями, которые нужно заполнить.
Начнём с NAME (название товара). В браузере видно, что товар называется "TP-Link AC1750 Smart WiFi Router (Archer A7) -Dual Band Gigabit Wireless Internet Router for Home, Works with Alexa, VPN Server, Parental Control, QoS".
Нажимаем Ctrl + A в браузере, левую кнопку мыши, "View Selection Source". Почему мы выделили текст, а затем выбрали "View Selection Source", ведь можно было просто посмотреть исходный код страницы? Чтобы JavaScript Rendering сработал и дал нам полный HTML-код страницы. Затем нажимаем Ctrl + F и находим название нашего товара в коде.
Как видим, нужный нам текст находится между тегами <h1 и </h1>. Возвращаемся на страницу редактирования шаблона, заполняем поля "Before search text" и "After search text", включаем "Enable line breaks" и "Shortest match", нажимаем OK. В результате получаем регулярное выражение:
(?<=<h1)[\w\W]*?(?=<\/h1>)

То же самое делаем для остальных полей

BRAND
Step 1:
(?<=Brand</span>)[\w\W]*?(?=<\/span>)
Стоит отметить, что не все поля можно получить одним регулярным выражением. Для этого существуют шаги. На первом шаге мы получаем часть HTML-кода, к которой применяем регулярные выражения из Step 2. Если на втором шаге нужный текст всё ещё не найден, используем Step 3.

CAT
Step 1:
(?<=<li\ class="a\-breadcrumb\-divider">)[\w\W]*?(?=<\/ul>)
Step 2:
(?<=<li><span\ class="a\-list\-item">)

CATURL
Step 1:
(?<=<li\ class="a\-breadcrumb\-divider">)[\w\W]*?(?=<\/ul>)
Step 2:
(?<=<li><span\ class="a\-list\-item">)[\w\W]*?(?=<\/a>)
Step 3:
(?<=href=").*?(?=")

IMG
Step 1:
(?<='colorImages':).*(?=\}\,)
Step 2:
(?<="large":").*?(?=")

AIMGS
Step 1:
(?<="main":).*?(?=\,"variant":)
Step 2:
(?<=").*?(?=":)
На разных страницах Amazon цена товара находится в разных местах. Поэтому мы создаём два варианта регулярного выражения и ставим между ними знак "or".

PRICE
Step 1:
(?<=?<span\ id="priceblock_ourprice").*?(?=?<\/span>)|(?<=id="priceblock_dealprice").*?(?=?<\/span>)

DSCR
Step 1:
(?<=<div\ id="productDescription")[\w\W]*?(?=<style)
Step 2:
(?<=<p>)[\w\W]*?(?=<\/p>)

Настройки сканирования

  • Using Selenium Yes/No (использовать Selenium или нет; выберите "Yes")
  • Delay (sec.) 3 (браузеру нужна задержка, чтобы выполнить все JavaScript-скрипты и отдать полный HTML-код)
  • Parse Everything Yes/No (здесь оставляем "No"; это позволит не сохранять страницы с неуникальным текстом)
  • Min. "gf" 8 (количество полей, которые удалось получить; если краулер не получил достаточно хороших полей, он проигнорирует страницу)
  • Priority Anchors (если краулер встретит ссылки с определёнными анкорами, он отметит их как приоритетные)
  • Priority URLs (похоже на "Priority Anchors", но здесь краулер смотрит на части URL)
  • URL Filtering (чтобы не тратить время краулера на ненужные страницы, можно указать признаки таких страниц)
Для сайтов, которым нужна сессия, нужно войти в нашем браузере, скопировать cookies нужного сайта и вставить их в соответствующую строку.

Краулинг и парсинг

Сохраните шаблон и перейдите на вкладку "TASKS". Добавьте задачу для Octopus (укажите стартовую страницу, выберите созданный шаблон и задайте, сколько страниц должен посетить краулер). Добавьте задачу для Worder и Kavunka, нажмите "Start" и идите пить чай с печеньем.

Получение горячих DATA

После приятного чая возвращаемся в "WEBSITES", находим amazon.com, нажимаем "DATA" и получаем данные. Хочу отметить, что Amazon довольно демократично относится к парсингу! Мне удалось получить более 2000 страниц без использования Proxy :). С помощью программного обеспечения Kavunka вы можете бесплатно получать большие объёмы данных о товарах Amazon.