Як безкоштовно збирати дані з 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.