Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду

Не будемо далеко ходити за прикладом і напишемо парсер контенту з «Хакера». Як ти знаєш, сайт нашого журналу зараз не надає ніякого API для програмного отримання статей, крім RSS. Однак RSS не завжди зручний, та й видає далеко не всю потрібну інформацію. Виправимо це!







Постановка задачі

Відповідь має бути таким:

Фреймворк для вебу

WrapAPI - це досить новий (пара місяців від роду) сервіс для побудови потужних кастомних парсеров інтернету і надання до них доступу по API. Не лякайся, якщо нічого не зрозумів, зараз поясню на пальцях. Працює так:

Трохи про приватності запитів

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

приготування

Кілька простих кроків перед початком.

  1. Йдемо на сайт WrapAPI. створюємо нову учетку і логіном в неї.
  2. Встановлюємо розширення для Chrome (підійде будь-який Chromium-based браузер), відкриваємо консоль розробника і бачимо нову вкладку WrapAPI.
  3. Переходимо на неї і логіном.

Це розширення нам знадобиться для того, щоб перехоплювати запити, які ми збираємося емулювати, і швидко направляти їх в WrapAPI для подальшої роботи. За логікою роботи це розширення дуже схоже на в'язку Burp Proxy + Burp Intruder.

відловлюємо запити

Тепер потрібно вказати WrapAPI, який HTTP-запит ми будемо використовувати для побудови нашого API. Йдемо на сайт «Хакера» і відкриваємо консоль розробника, переключившись на вкладку WrapAPI.

Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду






Запити, які генерітся після натискання на посилання пагінатора, будемо використовувати як зразок

Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду
Запит спійманий, зберігаємо його на сервер WrapAPI

Конфігуріруем WrapAPI

Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду
Огляд нашого майбутнього API

Переходь на вкладку Inputs and request. Тут нам знадобиться вказати, з якими параметрами WrapAPI повинен парсити запитувану сторінку, щоб сервер віддав йому валідний відповідь.

Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду
Конфігуріруем вхідні параметри запиту

Заголовки запиту нижче можна не чіпати, я використовував стандартні з Chromium. Якщо Парс не "Хакер», а дані з якого-небудь закритого сервера, можеш підставити туди потрібні куки, хедери, basic-auth і все, що потрібно. Одним словом, ти зможеш налаштувати свій запит так, щоб сервер без жодних підозр віддав тобі контент.

Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду
Виставляємо необхідні POST-параметри в форматі form / urlencoded, щоб наш запит відпрацював правильно

Вчимо WrapAPI відсутньою фічам

Тепер потрібно вказати WrapAPI, як обробляти отриманий результат і в якому вигляді його представляти. Переходь на наступну вкладку - Outputs and response.

Продовження статті є тільки передплатникам

Варіант 2. Купи одну статтю