• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Określenie programowo CSS selectora (lub XPath) z kodu HTML na podstawie tekstu zawartego w tagu...

HackNation - ogólnopolski hackathon
+1 głos
685 wizyt
pytanie zadane 11 czerwca 2024 w Python przez reaktywny Nałogowiec (46,230 p.)
edycja 11 czerwca 2024 przez reaktywny
Cześć!

Jak określić programowo CSS selector (lub XPath) z kodu HTML strony na podstawie tekstu zawartego w tagu wskazywanym przez ten selector?

Najchętniej w Pythonie, może być Rust, od biedy Typescript.

Przykładowo dla tekstu "Ostatnia aktywność"

na tym forum, chcę otrzymać:

.qa-main > h1:nth-child(1) > a:nth-child(1)

Dzięki za pomoc!

2 odpowiedzi

+3 głosów
odpowiedź 13 czerwca 2024 przez Wiciorny Ekspert (282,580 p.)
edycja 13 czerwca 2024 przez Wiciorny
Masz na myśli takie działanie, jak podczas zdarzeń myszki, wykonywanych na danym elemencie, kiedy to przegladarka określa ścieżkę?
Jest to do zrobienia, ale wymaga dużo pracy i przemyślenia regexów, bo trzeba by napisać funkcje, która parsuje całego html do wystąpienia pożądanego elementu, uwzględniając - elementy html, ich klasy, idy itp. a pomijając pozostałe taki.

Tylko muszę dobrze zrozumieć, tutaj masz w rust funkcje: https://pastebin.com/vBacB88i
Nie gwarantuje, że każdy przypadek będzie stanie dobrze zbudować, trzeba by dalej modyfikować funkcje i poprawiać w oparciu o regexy.
komentarz 13 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)

Masz na myśli takie działanie, jak podczas zdarzeń myszki, wykonywanych na danym elemencie, kiedy to przegladarka określa ścieżkę?

Dokładnie!

Zajrzę do tego kodu w weekend i zrelacjonuje jak to działa.

Dzięki!

komentarz 13 czerwca 2024 przez Karol Belka Obywatel (1,140 p.)

@Wiciorny, na pewno autorowi nie chodzi o regexy, wyrażenia regularne.

1
komentarz 13 czerwca 2024 przez Wiciorny Ekspert (282,580 p.)
Nie zrozumiałeś, więc przeczytaj to co napisałem. I też pomyśl czym są regexy. :) i do czego służą. Bo głupoty wypowiadasz.
Samo to żeby filtrować selektory musi wykorzystać regexy, żeby działało sprawnie i tak działa "wbudowana" funkcjonalność przeglądarki.
Tworzysz specjalny pattern, który jest wstanie filtrować idy, klasy, tagi, metadane, aby wybierać tylko pożądane elementy.
Akurat w robocie pisałem już takie rozwiązania, ale raczej na znanym silniku i prymitywnych paserach, ale mimo wszystko przeczytaj ze zrozumieniem, co ja napisałem.

Więc akurat autorowi chodzi o to, co robi kod który podałem :)
komentarz 13 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)
Dokładnie tak jak pisze Wiciorny.
0 głosów
odpowiedź 13 czerwca 2024 przez Karol Belka Obywatel (1,140 p.)
https://www.php.net/manual/en/simplexmlelement.xpath.php

Odpowiedź brzmi, nie wiem, choć się domyślam. Pozdrawiam
komentarz 13 czerwca 2024 przez Panelinio Stary wyjadacz (10,680 p.)

Dobrze!

komentarz 13 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)

@Karol Belka, mnie interesuje odwrotny proces. Podaje tekst i chce otrzymać XPath czy CSS selector który prowadzi do tego tekstu.

komentarz 13 czerwca 2024 przez Karol Belka Obywatel (1,140 p.)
Teraz mówisz o utworzeniu własnego języka programowania w cudzysłowiu.

Jeśli w tekście jest słowo i spacja, a następnie dwukropek sporządź odpowiednio znacznik, tag z zagnieżdżeniami i nową linią.
komentarz 13 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)
Nie teraz, tylko od samego początku!

To co pokazałeś, to jest standard, to jest dostępne w HTML Agility Pack w C#, JSOUP w Java, BeautifulSoup w Python i w wielu innych bibliotekach. Także Selenium, Playright i podobne mają tą funkcjonalność.
komentarz 13 czerwca 2024 przez Karol Belka Obywatel (1,140 p.)
Musisz nauczyć się pisania do pliku .txt lub .xhtml. Napisz instrukcję warunkową, która sprawdzi użycie dwukropka i inne. Następnie utworzy plik tekstowy i wygeneruje tagi.
komentarz 15 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)
A te pętle, funkcje i zmienne też będą potrzebne?
komentarz 15 czerwca 2024 przez Karol Belka Obywatel (1,140 p.)
Tak, na pewno.
komentarz 15 czerwca 2024 przez reaktywny Nałogowiec (46,230 p.)
Wpędzasz mnie w kłopoty.

Podobne pytania

+1 głos
1 odpowiedź 286 wizyt
pytanie zadane 20 stycznia 2020 w Python przez Bartekmwt1000 Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 188 wizyt
pytanie zadane 4 lutego 2020 w C i C++ przez Aleksandra2003 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 229 wizyt

93,624 zapytań

142,544 odpowiedzi

323,032 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1210p. - dia-Chann
  2. 1197p. - DziarnowskiJ
  3. 1177p. - Łukasz Piwowar
  4. 1172p. - CC PL
  5. 1161p. - Maurycy W
  6. 1141p. - Adrian Wieprzkowicz
  7. 1138p. - raydeal
  8. 1116p. - rucin93
  9. 1101p. - robwarsz
  10. 1100p. - Mariusz Fornal
  11. 1024p. - Tomasz Bielak
  12. 1024p. - ssynowiec
  13. 885p. - Dominik Łempicki (kapitan)
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 727p. - Wojciech Malicki
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...