ten BeautifulSoup neni zase tak pomaly, jak jsem se obaval, takze pekna knihovnicka pro nas, kteri potrebujeme neco dostavat z HTML stranek (a regexpy v tomto pripade samozrejme vubec nehrozi). Mozna by jeste mohlo byt zmineno, ze se daji zapisovat i slozitejsi podminky, napriklad na dva atributy (v mem pripade na class a id nebo class a name).
Jen na okraj - nema nekdo rozumny nastroj pro situaci, kdy je cast stranky vytvarena v JavaScriptu? testovali jsme chrome+selenium, ale to je dost divoke na nastaveni (nicmene aspon to funguje).
Selenium můžeš vypustit, použitelný je i samotný bezhlavý chrome:
{ sleep 1; printf '%s\n%s' '$("#qunit-testresult").text();' 'quit'; } | chromium --headless --gpu-disable --repl http://localhost/tests-js-qunit/index.html > out.txt
Načte stránku na zadané url a po vteřině (no, dost hloupé, určitě jde lépe) si vyžádá výsledek testů. Obecně jde na stdin zaslat jakýkoliv script, který se provede v kontextu načtené stránky a na stdout vrátí json s výsledkem.
Ako je na tom lxml s backreferenciou smerujucou od elementu pri ktorom sa zacne hladat smerom ku korenu?
Vrati elem.xpath("../") parent element? Viem, ze ../ pouzite vovnutri cesty vseobecne funguje, pokial sa nevylezie nad element pri ktorom sa hladat zacina, ale standardny ElementTree v Pythone ma ten problem, ze si nedrzi referenciu na parenta, takze ten zapis hore nefunguje a musi sa zlozito (z pohladu casu, nie kodu) konstruovat reverse lookup mapa.
Přišlo mi, že tahle část nebyla ani tak o knihovně lxml jako spíše o jazyku Xpath. Což je ovšem docela dobrý námět na nějaký samostatný seriál. Pokročilější výrazy Xpath. Všude na webu se válí hromady stránek o základech Xpath, kde však člověk většinou najde opravdu jen to naprosto základní minimum. Pokročilejší používání se hledá mnohem hůře.
to je pravda, napriklad tzv. osy ("axis") je vetsinou vysvetlena strasne zmatecne a oficialni stranky jsou bez prikladu. Kdyby byl nekdo ochotny to popsat nam beznym develum, kteri semtam do XML musi sahnout, bylo by to super. Protoze bez skutecne znalosti XPath nepujdou dobre ani sablony.