Młoda kobieta czyści klawiaturę laptopa

Podstawy scrapowania danych – jak korzystać z narzędzi opartych na XPath?

6 min. czytania

Web scraping, czyli automatyczne pobieranie danych z witryn, to dziś jedno z kluczowych narzędzi programistów, analityków danych i marketerów.

W tym przewodniku poznasz XPath – precyzyjny język zapytań do HTML/XML – i nauczysz się budować selektory krok po kroku oraz stosować je w praktyce z popularnymi narzędziami.

Czym jest web scraping i dlaczego XPath jest jego sercem?

Web scraping to technika automatycznego pozyskiwania danych z witryn internetowych, która parsuje kod HTML stron i symuluje zachowanie przeglądarki. Służy do zbierania informacji trudnych do ręcznego pobrania – np. cen produktów, recenzji, rankingów czy danych z forów.

XPath (XML Path Language) pozwala nawigować po drzewiastej strukturze dokumentów HTML/XML i precyzyjnie wybierać elementy po atrybutach, tekście i relacjach.

Najważniejsze korzyści XPath w scrapingu:

  • precyzyjne targetowanie elementów po atrybutach, tekście lub pozycji,
  • obsługa złożonych relacji w drzewie DOM (dzieci, rodzice, rodzeństwo),
  • integracja z narzędziami no‑code i bibliotekami programistycznymi.

Uwaga: XPath może być wrażliwy na zmiany w HTML, dlatego warto tworzyć krótkie, względne selektory zamiast absolutnych ścieżek.

Zrozumienie struktury HTML – fundament XPath

Zanim zaczniesz pisać XPath, poznaj hierarchiczną strukturę HTML: od roota <html>, przez <body>, po elementy jak <div>, <h1> czy <a>. Każdy element ma atrybuty (np. class="example", id="main"), tekst i potomków.

Kluczowe pojęcia, które ułatwią Ci start:

  • węzeł (node) – dowolny element HTML,
  • ścieżka absolutna – pełna droga od roota, np. /html/body/div/h1 (unikaj w scrapingu – jest krucha),
  • ścieżka względna (krótki XPath) – zaczyna się od //, np. //h1 (szybsza i bardziej elastyczna),
  • operatory przejścia/ dla dzieci, // dla potomków dowolnego poziomu.

Prosty przykład selekcji wszystkich nagłówków H1: //h1.

Podstawowa składnia XPath – krok po kroku

Poniższa ściąga obejmuje najczęściej używane konstrukcje XPath, które sprawdzają się w realnych projektach scrapingu.

1. Selekcja po tagu i pozycji

  • //tag – wszystkie elementy danego typu, np. //div,
  • (//tr)[1] – pierwszy dopasowany element, np. pierwszy wiersz tabeli,
  • //div/h1 – nagłówek h1 jako bezpośrednie dziecko elementu div.

2. Selekcja po atrybutach

  • //div[@class="example"] – element div z atrybutem class="example",
  • //a[contains(@href, "example")] – linki zawierające „example” w href,
  • //*[starts-with(@class, 'fb')] – elementy, których atrybut class zaczyna się od „fb”,
  • //div[contains(@class, 'widget')] – elementy z klasą zawierającą „widget”.

Uwaga: w starszych silnikach XPath brak natywnego ends-with(); używaj contains() lub ich kombinacji.

3. Selekcja po tekście

  • //span[text()="Target Text"] – dokładne dopasowanie tekstu w <span>,
  • //td[contains(text(), "£51.77")] – komórka tabeli zawierająca podaną wartość,
  • dla twardych spacji używaj normalize-space(), np. //span[normalize-space(text())="Tekst"].

4. Nawigacja po osiach (relacje w drzewie)

  • //p/.. – przejście do rodzica elementu p,
  • //h2/following-sibling::p – paragrafy będące rodzeństwem następującym po <h2>,
  • //tr/following-sibling::tr – kolejne wiersze tabeli po aktualnym.

5. Warunki złożone i funkcje

  • //div[@class="example" or @id="main"] – warunek logiczny „lub”,
  • //div[@class="example" and contains(@data-price, "50")] – warunek logiczny „i”,
  • //div[not(@class="hidden")] – wykluczenie elementów z klasą „hidden”.

Łącz kombinacje warunków, aby tworzyć odporne na zmiany, krótkie i celne selektory XPath.

Narzędzia do budowania i testowania XPath

Nie zgaduj – testuj selektory w przeglądarce i narzędziach.

Chrome DevTools i XPath Helper

Aby szybko sprawdzić XPath w Chrome, wykonaj te kroki:

  1. otwórz DevTools (F12) i przejdź do zakładki Elements,
  2. użyj skrótu Ctrl+F i wpisz XPath, np. //h1,
  3. zainstaluj rozszerzenie XPath Helper, które pomoże generować ścieżki krótkie i absolutne.

Debugowanie: testuj po każdej zmianie strony i stosuj rozsądne timeouty w narzędziach.

Przykłady w Scrapy (Python)

Pobranie opisu Open Graph:

response.xpath("//meta[@property='og:description']/@content").get()

Pobranie tekstu pierwszego skryptu:

response.xpath("//html/body/script/text()").extract_first()

XPath w praktyce – narzędzia no‑code i programistyczne

Octoparse – scraping bez kodowania

Poniżej przykładowy schemat konfiguracji z użyciem XPath:

  1. Pętle paginacji – użyj //a[contains(@href, "page=2")], aby klikać „Następna”;
  2. Ekstrakcja – wklej XPath, np. //h3/a, i nazwij pole „Title”;
  3. Loop item – wskaż elementy listy, np. //div/h3/a, aby przechodzić po potomkach;
  4. Extract Data – dodaj własne XPath dla kolejnych pól.

Proces: wybierz element → wklej XPath → kliknij/Extract → uruchom zadanie.

Google Sheets – prosty scraping

Użyj funkcji arkusza, aby szybko pozyskać treści:

IMPORTXML(URL; "//h1")

IMPORTXML(URL; "//meta[@name='viewport']/@content")

Limit: w jednym arkuszu działa do ok. 50 importów bez throttlingu.

Selenium – testy i scraping dynamiczny

Wyszukaj elementy po atrybutach lub tekście:

driver.findElement(By.xpath("//div/button[@type='submit']"));

driver.findElement(By.xpath("//span[text()='-5%']"));

Inne – wyrażenia regularne jako uzupełnienie

Połącz XPath z wyrażeniami regularnymi do czyszczenia wartości (np. filtracja liczb i walut po ekstrakcji tekstu).

Najczęstsze błędy i optymalizacja XPath

Unikaj typowych pułapek, trzymając się tych zasad:

  • absolutne vs krótkie – preferuj // zamiast długich ścieżek od roota,
  • dynamiczne atrybuty class/id – stosuj contains() zamiast pełnego dopasowania,
  • wielokrotne wyniki – ograniczaj selekcję przez [1] lub warunki unikalizujące,
  • zmiany strony – testuj regularnie i korzystaj z narzędzi do debugowania,
  • optymalizuj długość – krótkie XPath zwykle działają szybciej.

Przykład optymalizacji: zamiast /html/body/div/table/tr/td użyj //td[contains(text(), "£")].

Zgodność z prawem i dobre praktyki

Pamiętaj o zasadach etycznych i prawnych podczas scrapingu:

  • sprawdź regulamin serwisu oraz plik robots.txt przed startem,
  • nie przeciążaj serwera – stosuj opóźnienia (rate limiting) i batching,
  • identyfikuj się nagłówkiem User-Agent i respektuj ograniczenia API,
  • stosuj proxy i rotację IP, gdy to uzasadnione polityką serwisu,
  • dbaj o prywatność – w Polsce i UE przestrzegaj RODO w zakresie danych osobowych.

Podsumowanie – praktyczne przykłady

Przykład 1: Scraping listy gier planszowych (BoardGameGeek):

response.xpath("//tr[@class='data']/td/a/text()").getall()

Zwraca listę tytułów gier.

Przykład 2: Paginacja w Octoparse: skonfiguruj pętlę elementów dla stron, np. //li[@class="page"]/a, a następnie dodaj akcję Click i regułę ekstrakcji nagłówków //h1.

Zacznij od prostych selektorów (np. //h1) i stopniowo buduj bardziej złożone wyrażenia – regularne testy w DevTools przyspieszą pracę.

XPath to bramka do zaawansowanego scrapingu – z narzędziami takimi jak Octoparse czy Scrapy zautomatyzujesz pozyskiwanie danych i łatwo skalujesz proces.

Marta Doruch

Absolwentka Informatyki Stosowanej na Politechnice Warszawskiej oraz Finansów w Szkole Głównej Handlowej. Doświadczenie zdobywała, wdrażając rozwiązania chmurowe OpenStack i AWS dla fintechów w Londynie i Zurychu, by obecnie łączyć świat technologii z biznesem jako konsultantka IT w Warszawie. Pasjonatka rynku nieruchomości i inwestorka, która po godzinach testuje nowinki Smart Home i pisze o wpływie sztucznej inteligencji na współczesną edukację.