Strona nie ma publicznego API, ale ma dane, które chcesz zbierać — klasyczna sytuacja przy monitoringu cen, ofert czy dostępności. Pierwszy odruch to napisanie scrapera HTML, ale to podejście jest kruche z definicji: każda zmiana wyglądu strony potrafi rozwalić selektor, który działał dzień wcześniej.
Zanim sięgnę po scraping, sprawdzam w DevTools zakładkę Network podczas przeglądania strony — praktycznie każda nowoczesna strona pod spodem odpytuje własne API, żeby pobrać dane do wyświetlenia. To API zwykle nie jest udokumentowane ani przeznaczone do użytku zewnętrznego, ale technicznie jest publicznie dostępne — strona i tak musi je odpytać z przeglądarki użytkownika.
Znalezienie właściwego requestu to kwestia obserwacji: który request zwraca dane, które widzę na ekranie, w czystym formacie JSON zamiast wymieszanym z HTML i CSS. Napisanie własnego klienta do tego API jest zwykle rzędem wielkości prostsze niż parsowanie znaczników HTML — i, co ważniejsze, nie psuje się przy każdym redesignie strony, bo struktura danych w API zmienia się rzadziej niż wygląd.
To podejście jest legalne tam, gdzie dane są publicznie dostępne dla każdego odwiedzającego stronę — różnica polega tylko na tym, że pobiera się je bezpośrednio, zamiast przez renderowaną stronę.