Парсинг інтернет магазинів

Так а тепер приступимо до самого парсеру, спочатку я викладу його код (для тих хто хоч трохи розуміє впораються без моїх коментарів), а потім почну пояснювати все потихеньку.

var sheet = SpreadsheetApp.getActiveSheet ();

var range = sheet.getRange ( "A2: I5000");

var cell = range.getCell (startRow, 1);

var response = UrlFetchApp.fetch (url);

for (var i = 1; i<=10;i++)

Парсинг інтернет магазинів

Ми маємо 2 функції getconten і getPageContent. з getconten ми передаємо потрібні дані і запускаємо функцію для getPageContent для парсинга сторінки яку ми передали з getconten.

Функція getconten: тут ми маємо цикл рівний кількість сторінок в даному розділі. За кожен прохід циклу ми відправляємо посилання на сторінку і кількість вже оброблених товарів.

І так яку ж посилання нам вставити для нашого сайту? Більшість сайтів має подібну структуру сайт.ру / розділ /? Сторінок = 1 під словом сторінка може ховатися будь-яке слово в нашому випадку start, частіше page. Іноді на першій сторінці сайту цієї змінної немає, потрібно просто перейти наприклад на другу. Для краще розуміючи рекомендую прочитати прочитати про GET запити тут або в google.

Формула 1 + 10 * (j-1) - потрібна для того щоб записи йшли далі, а не перезаписувати в документі, де 10 це кількість записів (! Увагу! Кількість записів за замовчуванням, для частоти краще зайти на потрібну сторінку з іншого браузера або з приватної вкладки тоді ви поведіть сторінку саме так, як бачить її ваш скрипт).

Функція getPageContent: тут коїться основна магія. Я думаю тут варто пояснити тільки основні моменти, більш докладніше почитати про кожну з функцій можна в гуглі якщо зацікавить.

sheet.getRange ( "A1: I5000") - тут ми вибираємо діапазон комірок, з якими ми будемо працювати, рекомендую ставити великий розбіг.

for (var i = 1; i<=10;i++) - параметры цикла, где 10 см.формулу выше (!Внимание! цифры должны совпадать с формулой вышей).

Основні параметри ми налаштували, тепер приступаємо до налаштування парсинга.

Подальші дії мають на увазі, що ви має базові поняття HTML і вихідний текст сторінки, якщо ж немає настійно рекомендую спочатку прочитати про ці речі.

І так розбір польоту пішов:

Щоб вставити в осередок деякий текст зі сторінки нам потрібно знати його початкове положення (start) і кінцеве (end). Для цього ми знаходимо унікальну рядок для елемента які ми хочемо Спарс, у випадку з зображенням товару це рядок

вона унікальна, її має тільки товари при цьому вона є у кожного товару, але відштовхуючись від цього рядка ми захопимо занадто багато, з цього знаходимо точку ще ближче до потрібної інформації і вже від її залишаємо як start. Незабутній приплюсовує кількість всіх символів в рядку.

start = textResp.indexOf ( '

', End) +24;

З кінцем ще простіше тут як правило закривається тег або ж лапки.

Далі функцією substring витягаємо потрібні дані знаючи де вони починаються і де закінчуються.

Тут просто присвоюємо значення в клітинку.

І переступаємо на новий стовпець, залишаючись на цій же рядку .offset (Рядок, Стовпець).

Незабутній в кінці перестрибнути на новий рядок і повернутися на нульовий стовпець.

cell = cell.offset (1, -5); - де 5 кількість стовпців на яке ми пішли або простіше кажучи скільки даних у товарів ми Спарс.

Тепер поговоримо про його достоїнства і недоліки більш докладно:

Він повністю універсальний, так його функціонал дозволяє Спарс майже все те ж саме що і велика частина платних парсеров.

Не вимагає установки якогось софта.

З недоліків це наявність деяких базових знань і наявність логіки, ну і трошки досвіду. Я не користувався іншими парсером, але мені здається там майже такий же вхідний парог.

Парсер досить костальний, але саме з цього безкоштовний, тобто його доведеться адаптувати під кожну задачу з цього має сенс використовувати тільки якщо товарів велика кількість.

Перше це частина тексту, який знаходиться перед потрібної тобі інформацією наприклад тег чи щось ще. Цей текст повинен бути унікальним тобто не можна просто тег

Шукати. Взагалі це команда видає індекс першого входження підрядка в рядку.

+24 це кількість символ в шуканої рядку, якщо цього не зробити то в клітинку вставлятиметься разом з цим рядком.

Даний варіант парсера призначений для каталогу тобто превью товарів. Можна переробити щоб він саму картку товару Парс якщо потрібна така задача. Мені просто ніколи не бракувало првеью.

Хоча один раз я Парс самі картки, але було один раз і там було небагато, не хочеться його як щось доробляти

// start = textResp.indexOf ( '

', End) +50;

// start = textResp.indexOf ( '