8 інструментів для парсингу сайтів
Розширення для браузерів, хмарні сервіси та бібліотеки.
Google надає користувачеві релевантні посилання завдяки моніторингу мережі та парсингу сайтів. Програми парсингу використовують не тільки для пошуку близьких до запиту посилань, але й для збору даних.
Розповідаємо, як просканувати інтернет і яке ПЗ вам знадобиться.

Як працює парсинг сайтів
Це автоматичний збір і систематизація інформації за допомогою ПЗ. Парсери застосовують, працюючи з великими обсягами інформації, які складно відсортувати вручну. Парсингом сайтів часто займаються роботи пошуковиків. Інструмент також використовують для аналізу цінової політики на сайтах-конкурентах і наповнення своїх онлайн-ресурсів. Наприклад, парсять сайти спортивної аналітики, щоб оновлювати інформацію про хід матчів, або моніторять коментарі в соціальних мережах.
Крім того, платформи, які відстежують інформацію про компанії, застосовують парсери, щоб автоматично додавати нові відомості з держреєстрів. Можливий і самопарсинг — пошук багів на своєму сайті (дубльованих або неіснуючих сторінок, а також неповних описів продуктів).
Як протидіють парсингу
Парсити і потім використовувати можна тільки ті дані, які не захищені авторським правом або містяться у відкритих джерелах. Іноді власники сайтів встановлюють захист — за велику навантаження на сервери потрібно платити, а надто інтенсивний парсинг може викликати DoS-атаку.
Способи захисту:
1. Тимчасова затримка між запитами (обмежує доступ до інформації для програми-парсера).
2. Захист від роботів (встановлення капчі, підтвердження реєстрації).
3. Обмеження прав доступу.
4. Блокування IP-адрес.
5. Honeypot — посилання на порожні файли або емулятори сервера, які використовують для виявлення зломщиків або парсерів.
Як обійти захист
Основна проблема парсера в тому, що сайт бачить ознаки нетипової поведінки і блокує доступ. Користувачі не відкривають тисячі сторінок за хвилини. Тому завдання парсера — видати себе за звичайного користувача. Один з етапів — використання емуляторів користувацьких інструментів. Вони надсилають серверу HTTP-запити із заголовком User Agent, тобто таким самим, як у звичайного користувача.

Інший спосіб захисту — вбудований фрагмент JavaScript. Запуск фрагмента з браузера відбудеться успішно, але при парсингу код HTML-сторінки буде нечитаємим. Платформа node.js, яка дозволяє запускати JS поза браузером, вирішує проблему.
Ще один варіант — використовувати «безголовий» браузер. Це програма, яка копіює функції звичайного браузера, але не має графічного інтерфейсу. Вона використовує програмне управління і може працювати у фоновому режимі.
При великій кількості запитів з однієї IP-адреси сайт може вимагати верифікацію за допомогою капчі. Деякі з них можна розшифрувати оптичним розпізнаванням символів, але краще змінювати IP. Для цього використовують проксі-сервери, які запитують інформацію з різних адрес.
XPath — мова запитів для доступу до частин документа XML, яку використовують для пошуку елементів з певним атрибутом. З її допомогою реалізують навігацію в DOM (Document Object Model) — програмному інтерфейсі, який містить інформацію про структуру сайту, HTML і XML-документів.
Програми для парсингу
Розширення для браузера
Веб-додатки використовують для простих завдань. Такі розширення є в кожному браузері. Вони зручні для аналізу маленького обсягу даних (до кількох сторінок).
-
Data Scraper
Цей інструмент використовують для вилучення даних з таблиць або інформації зі сторінки у форматах XLS, CSV і TSV. Платний доступ додає нові функції, наприклад, API і анонімні IP.
Вартість: безкоштовно при перегляді до 500 сторінок. - Scraper.AI
Розширення призначене для імпорту даних із сайтів. Є можливість натиснути на елемент сторінки і вибрати всі елементи такого типу на сайті. У Scraper.AI доступна функція регулярного моніторингу змін на веб-сторінці. Зібрана інформація експортується у формати JSON, CSV і XLSX.
Вартість: безкоштовно перші 3 місяці, пакети — від $49 до $249 на місяць.
Хмарні сервіси
Порівняно з розширеннями, у цих програм більше функцій. Робота проходить у «хмарі» через веб-інтерфейс або API, а на комп’ютері зберігаються тільки результати.
- Scraper API
Цей сервіс застосовують для парсингу сайтів з високим ступенем захисту. Його використання потребує навичок програмування. Програма самостійно повторює неуспішні запити і обробляє капчу. Також додаток може візуалізувати елементи, які вимагають рендеринга Javascript. Scraper API працює з Python, Ruby і PHP.
Вартість: 1 тис. безкоштовних запитів API, пакети від $29 до $249 на місяць. - Diffbot
Він використовує ML-алгоритми і computer vision при парсингу, а також працює з API і може автоматично визначити тип URL-адрес. Diffbot регулярно парсить мережу і зберігає результати. Компанія створює найбільший граф знань — вона з'єднує факти про створені продукти, новинні події, результати звітів. Дізнатися більше про Diffbot можна тут.
Вартість: безкоштовно перші 14 днів, пакети Start і Plus — $299 і $899 на місяць.
Десктопні програми
Більшість десктоп-парсерів працюють з Windows, але на macOS їх можна запустити з віртуальних машин. Є й кросплатформені рішення. Десктопні парсери можуть бути ефективнішими за хмарні. Мінус у тому, що вони використовують операційну потужність комп’ютера.
- ParseHub
Програма дозволяє інтегрувати і візуалізувати зібрані дані за допомогою BI-системи Tableau. Підтримує графічний інтерфейс обробки даних point-and-click. У ParseHub є функція запланованого збору датасета у встановлений інтервал часу. Сервіс працює з Windows, Mac і Linux. Доступний у хмарній і десктопній версії.
Вартість: безкоштовно при обробці до 200 сторінок, пакети Standard і Professional — $149 і $499 на місяць.

Бібліотеки для створення власного парсера
- Jaunt
Бібліотека на Java, яку використовують для парсингу і автоматизації запитів у форматі JSON. Це формат обміну даними у веб-додатках, наприклад, для надсилання інформації з сервера клієнту і відображення на сайті. Jaunt працює як браузер без графічного інтерфейсу, що прискорює його. У Jaunt обробляють вибіркові HTTP-запити і відповіді, а ще є доступ у DOM.
Вартість: безкоштовно. - Scrapy
Бібліотека для Python з відкритим кодом. Фреймворк використовують для парсингу. Особливість Scrapy — обробка запитів в асинхронному порядку: можна задавати команду не чекаючи завершення попереднього. Також наступні запити будуть виконуватися, навіть якщо в обробці одного з них виникла помилка.
У бібліотеці можна встановити паузу між запитами, а також регулювати кількість запитів з одного IP або домену.
Вартість: безкоштовно. - Beautiful Soup
Теж бібліотека на мові Python, але більш проста. Зазвичай фреймворк використовують для даних з HTML- і XML-документів. Щоб відкривати посилання і зберігати зібрані результати, до Beautiful Soup необхідно підключити додаткові бібліотеки.
Вартість: безкоштовно.