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.