Как бесплатно собирать данные с Amazon
В этом руководстве я покажу, как получать данные о товарах с Amazon. Перед парсингом любого сайта нужно проверить, какие данные мы получим, если сделаем запрос с помощью
curl. Зачем это нужно:
В результате мы получили HTML-страницу с заголовком <title> "Sorry! Something went wrong!". Похоже, без JavaScript Rendering здесь не обойтись.
- использование JavaScript Rendering заметно снижает скорость сканирования;
- это создаёт дополнительную нагрузку на сервер;
- сканирование будет выполняться в один поток.
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".
Начнём с 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:
CAT
Step 1:
CATURL
Step 1:
IMG
Step 1:
AIMGS
Step 1:
PRICE
Step 1:
DSCR
Step 1:
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 (чтобы не тратить время краулера на ненужные страницы, можно указать признаки таких страниц)
Краулинг и парсинг
Сохраните шаблон и перейдите на вкладку "TASKS". Добавьте задачу для Octopus (укажите стартовую страницу, выберите созданный
шаблон и задайте, сколько страниц должен посетить краулер). Добавьте задачу для Worder и Kavunka, нажмите "Start" и
идите пить чай с печеньем.
Получение горячих DATA
После приятного чая возвращаемся в "WEBSITES", находим amazon.com, нажимаем "DATA" и получаем данные. Хочу отметить,
что Amazon довольно демократично относится к парсингу! Мне удалось получить более 2000 страниц без использования Proxy :). С помощью
программного обеспечения Kavunka вы можете бесплатно получать большие объёмы данных о товарах Amazon.