Tester XPath
Dokument XML lub HTML
Wklej kod XML lub HTML zawierający do 1 000 000 znaków. Obliczanie odbywa się w tej przeglądarce z użyciem XPath 1.0.
Bezwzględne lub względne wyrażenie XPath 1.0. Prefiksy zadeklarowane w dokumencie są rejestrowane automatycznie; domyślna przestrzeń nazw jest dostępna pod prefiksem d.
Pisanie XPath do scrapingu lub XSLT to zgadywanie na ślepo, jeśli nie masz podręcznego środowiska testowego. Ten tester przyjmuje Twój XML lub HTML w jednym panelu, a wyrażenie w drugim, wykonuje XPath 1.0 silnikiem Twojej własnej przeglądarki i wypisuje każdy dopasowany węzeł wraz z rodzajem, atrybutami, tekstem i zserializowanymi znacznikami. Wyrażenia skalarne, takie jak count(//book), zwracają wartość bezpośrednio, a prefiksy przestrzeni nazw zadeklarowane w dokumencie są rejestrowane automatycznie. Wszystko działa w Twojej przeglądarce: dokument nigdy nie jest nigdzie wysyłany.
Jak przetestować wyrażenie XPath
-
1
Wklej XML lub HTML
Automatyczne wykrywanie przełącza się na łagodne parsowanie HTML, gdy zobaczy doctype lub korzeń HTML; możesz też wymusić tryb XML lub HTML.
-
2
Wpisz swój XPath
Bezwzględne (`/library/book`) lub względne (`//div[@class='card']`), dowolne wyrażenie XPath 1.0.
-
3
Wykonaj
Silnik XPath Twojej przeglądarki wykonuje zapytanie lokalnie; nic nie jest wysyłane na żaden serwer.
-
4
Przejrzyj wyniki
Każde dopasowanie pokazuje rodzaj węzła, atrybuty, przycięty tekst i zserializowane znaczniki; wyświetlanych jest do 200 dopasowań.
Podstawy XPath 1.0
| Wyrażenie | Co dopasowuje |
|---|---|
/books/book |
Elementy <book> będące dziećmi korzenia <books> |
//book |
Każdy <book> w dowolnym miejscu dokumentu |
//book[@id='42'] |
<book> z atrybutem id równym 42 |
//book[1] |
Pierwszy <book> u każdego rodzica (nie w dok.) |
(//book)[1] |
Pierwszy <book> w całym dokumencie |
//book[title='1984'] |
<book>, którego tekst <title> to „1984“ |
//book/@id |
Atrybuty id wszystkich elementów <book> |
//book[position() > 1] |
Wszystkie <book> poza pierwszym |
//book[last()] |
Ostatni <book> u każdego rodzica |
Wyrażenia skalarne też działają: count(//book) zwraca liczbę, string(//title) łańcuch znaków, a boolean(//book[@id]) prawdę lub fałsz. Tester pokazuje te wartości bezpośrednio, zamiast listy węzłów.
Popularne osie poza child
ancestor::, wszyscy przodkowiefollowing-sibling::, rodzeństwo za bieżącym węzłempreceding-sibling::, rodzeństwo przed nimdescendant::, wszyscy potomkowieattribute::(skrót@), atrybuty bieżącego węzłaparent::(skrót..), element nadrzędny
Osobliwości HTML
HTML nie jest ścisłym XML, więc tester parsuje go łagodnie parserem HTML Twojej przeglądarki zamiast ścisłym parserem XML. Tryb HTML jest wykrywany automatycznie po <!DOCTYPE html> lub korzeniu <html>, a selektorem trybu dokumentu możesz wymusić dowolny z trybów. W trybie HTML nazwy znaczników i atrybutów są zapisywane małymi literami, więc pisz XPath małymi literami: //div[@class], nie //DIV[@CLASS].
Przestrzenie nazw
XML z przestrzeniami nazw wymaga rejestracji prefiksów:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
Tester przeszukuje dokument pod kątem deklaracji xmlns i rejestruje każdy prefiks automatycznie, więc //content:encoded po prostu działa. Domyślna przestrzeń nazw (samo xmlns="...") nie ma prefiksu w dokumencie, dlatego tester wiąże ją z prefiksem d: elementy <item> w kanale z domyślną przestrzenią nazw wybierzesz przez //d:item. Zarejestrowane przestrzenie nazw są wypisane obok wyników.
Czego ten tester nie wykonuje
Przeglądarki wykonują XPath 1.0, czyli ten sam dialekt, którego używa większość narzędzi do scrapingu. Funkcje z XPath 2.0 i nowszych, takie jak matches(string, regex), tokenize(string, delimiter), wyrażenia for ... return i operatory sekwencji, nie należą do niego; znajdziesz je w narzędziach XSLT 2.0/3.0. XPath 1.0 pozostaje najbardziej przenośnym wyborem do web scrapingu.
Wskazówki do testowania
- Zacznij szeroko i zawężaj. Najpierw
//div, potem//div[@class], na końcu konkretna wartość klasy. - Sprawdź deklaracje przestrzeni nazw. Większość błędów typu „czemu mój XPath nic nie zwraca?“ to przestrzenie nazw; zajrzyj do listy zarejestrowanych przestrzeni nazw.
- Uważaj na wielkość liter. XML rozróżnia wielkość liter. Tryb HTML zapisuje nazwy małymi literami.
- Testuj string() przy wyciąganiu tekstu.
//p/text()istring(//p)różnią się, gdy w środku są zagnieżdżone znaczniki.
Najczęściej zadawane pytania
Nie, tylko XPath. Większość przeglądarek obsługuje oba przez document.querySelectorAll (CSS) i document.evaluate (XPath). Używaj tego, co jest czytelniejsze dla danego zadania.
Parsowanie HTML zapisuje nazwy znaczników i atrybutów małymi literami. Upewnij się, że Twój XPath używa małych liter: //div[@class], nie //DIV[@CLASS]. Sprawdź też tryb: wymuszenie XML na niechlujnym HTML kończy się błędem parsowania, a tryb HTML parsuje go łagodnie.
Prefiksy zadeklarowane w dokumencie są rejestrowane automatycznie dla Twojego wyrażenia. Domyślna przestrzeń nazw jest wiązana z prefiksem d, więc //d:item wybiera elementy <item> w dokumencie z domyślną przestrzenią nazw. Aktywne powiązania są wypisane przy wynikach.
Nie. Dokument i wyrażenie są wykonywane przez silnik XPath Twojej własnej przeglądarki i nie są wysyłane na nasz serwer, zapisywane ani dodawane do adresu strony; istnieją tylko w sesji tej przeglądarki, aby widok wieloetapowy mógł pokazać Twoje wyniki.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Generator losowych liter
Generuj losowe litery A-Z. Wybierz liczbę, wielkie litery, małe litery lub zapis mieszany i użyj wyniku w grach, zadaniach lub lekcjach.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Konwerter Base64 na Hex
Konwertuj standardowy ciąg Base64 na bazowe bajty zapisane ciągłym szesnastkowo wielkimi literami. Ścisłe dekodowanie, idealne do tokenów, kluczy i podpisów JWT.
Konwerter binarnego na ósemkowy
Konwertuj binarny na ósemkowy, grupując bity po trzy. Przydatne przy uprawnieniach Unix, starszych systemach i kompaktowym zapisie liczb.