Не будемо далеко ходити за прикладом і напишемо парсер контенту з «Хакера». Як ти знаєш, сайт нашого журналу зараз не надає ніякого API для програмного отримання статей, крім RSS. Однак RSS не завжди зручний, та й видає далеко не всю потрібну інформацію. Виправимо це!
Постановка задачі
Відповідь має бути таким:
Фреймворк для вебу
WrapAPI - це досить новий (пара місяців від роду) сервіс для побудови потужних кастомних парсеров інтернету і надання до них доступу по API. Не лякайся, якщо нічого не зрозумів, зараз поясню на пальцях. Працює так:
Трохи про приватності запитів
Ти напевно вже задумався про те, наскільки безпечно використовувати чужий сервіс і передавати йому параметри своїх запитів з приватними даними. Тим більше що за замовчуванням для кожного нового API-проекту буде створюватися публічний репозиторій і запускати API з нього зможе будь-хто. Не все так погано:
приготування
Кілька простих кроків перед початком.
- Йдемо на сайт WrapAPI. створюємо нову учетку і логіном в неї.
- Встановлюємо розширення для Chrome (підійде будь-який Chromium-based браузер), відкриваємо консоль розробника і бачимо нову вкладку WrapAPI.
- Переходимо на неї і логіном.
Це розширення нам знадобиться для того, щоб перехоплювати запити, які ми збираємося емулювати, і швидко направляти їх в WrapAPI для подальшої роботи. За логікою роботи це розширення дуже схоже на в'язку Burp Proxy + Burp Intruder.
відловлюємо запити
Тепер потрібно вказати WrapAPI, який HTTP-запит ми будемо використовувати для побудови нашого API. Йдемо на сайт «Хакера» і відкриваємо консоль розробника, переключившись на вкладку WrapAPI.
![Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду (створюємо) Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду](https://images-on-off.com/images/156/apidlyavsexikazhdogosozdaemmoshniyparser-254ae7d7.png)
![Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду (парсер) Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду](https://images-on-off.com/images/156/apidlyavsexikazhdogosozdaemmoshniyparser-ed2c77b9.png)
Конфігуріруем WrapAPI
![Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду (потрібно вказати WrapAPI) Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду](https://images-on-off.com/images/156/apidlyavsexikazhdogosozdaemmoshniyparser-a94f3548.png)
Переходь на вкладку Inputs and request. Тут нам знадобиться вказати, з якими параметрами WrapAPI повинен парсити запитувану сторінку, щоб сервер віддав йому валідний відповідь.
![Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду (потрібно вказати WrapAPI) Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду](https://images-on-off.com/images/156/apidlyavsexikazhdogosozdaemmoshniyparser-e49a1b1a.png)
Заголовки запиту нижче можна не чіпати, я використовував стандартні з Chromium. Якщо Парс не "Хакер», а дані з якого-небудь закритого сервера, можеш підставити туди потрібні куки, хедери, basic-auth і все, що потрібно. Одним словом, ти зможеш налаштувати свій запит так, щоб сервер без жодних підозр віддав тобі контент.
![Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду (потрібно вказати WrapAPI) Api для всіх і кожного створюємо потужний парсер веб-сайтів без єдиної рядки коду](https://images-on-off.com/images/156/apidlyavsexikazhdogosozdaemmoshniyparser-7f2d1052.png)
Вчимо WrapAPI відсутньою фічам
Тепер потрібно вказати WrapAPI, як обробляти отриманий результат і в якому вигляді його представляти. Переходь на наступну вкладку - Outputs and response.