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 atrybutemclass="example",//a[contains(@href, "example")]– linki zawierające „example” w href,//*[starts-with(@class, 'fb')]– elementy, których atrybutclasszaczyna 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:
- otwórz DevTools (F12) i przejdź do zakładki Elements,
- użyj skrótu Ctrl+F i wpisz XPath, np.
//h1, - 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:
- Pętle paginacji – użyj
//a[contains(@href, "page=2")], aby klikać „Następna”; - Ekstrakcja – wklej XPath, np.
//h3/a, i nazwij pole „Title”; - Loop item – wskaż elementy listy, np.
//div/h3/a, aby przechodzić po potomkach; - 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.txtprzed startem, - nie przeciążaj serwera – stosuj opóźnienia (rate limiting) i batching,
- identyfikuj się nagłówkiem
User-Agenti 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.






