Fórum Root.cz
Hlavní témata => Software => Téma založeno: hknmtt 30. 01. 2025, 16:22:39
-
Chcem nacitat webovu stranku a spravit z nej preview tym, ze si vytiahnem z html meta tagy. To robim aktualne programovo, problem su ale progresivne stranky, ktore nemaju realne ziadne html a vsetko riesi javascript. Takze potrebujem pouzit headlses browser ktory stranky nacita, spusti javascript a vytiahne mi vyrenderovane HTML, ktore mozem spracovat.
Ako na to? Na webe je o headless prehliadacoch paradoxne dost malo informacii. CLI prehliadacov neponuka ziadne informacie a najst niekde informacie o cli vlajkach a moznostiach cli je skoro nemozne.
Viem si napriklad spravit screenshot s chrome alebo ulozit stranku ako pdf ale neviem ako spravit to co popisujem.
-
Selenium by mohla být cesta. Používal jsem to před pár lety na scraping dat z webových stránek, co se renderují dynamicky a dlouho jsem s tím nedělal.
Nicméně Selenium má různé drivery (pro Gecko prohlížeče, Chromium atp.), browser buď už je spuštěný a běží v headless režimu, nebo se on-demand spustí. Jde za to pak tahat z různých jazyků, prostředí (Java, Python, C#.. JS).
Jsou tam různé funkce, včetně screenshotu.
-
Všechny tyhle headless technologie (selenium,cypress, playwright) používají technologií webdriver nikdy sem na takhle nízké úrovni nepracoval ale vypadá to snadno..
https://developer.chrome.com/docs/chromedriver/get-started
Šel by h touto cestou...
-
Si vyber ....
https://blog.apify.com/top-11-open-source-web-crawlers-and-one-powerful-web-scraper/
-
To su vsetko uplne zbytocnosti. Ja len chcem chrome.exe -headless -output-format-html https://www.google.com to je cele.
-
Kdyz tak dokonale vis co chces, tak proc se tu blbe ptas? Si to do toho chromaka dopis, sak je to opensource ....
-
Tazatel chce neco jednoduse vyresit. Webscraping sel resit jednoduse naposled kdy? Mozna 2010 nebo tak neco? Dnes je jina doba. S webscrapingem je hromada problemu i kdyz to vypada trivialne a vlastne by to melo byt trivialni...zijeme ale v dobe tun JavaScriptu, ktery trva nez se nacte, nacita se ruzne po castech, stranky obsahuje ruzne captchy (nektere ho zobrazi az za urcitych podminek nebo az po urcite dobe), honeypoty, ochrany atd. Na nejaky jednoduchy prikaz muzeme zapomenout.
-
Co tohle: https://github.com/Y2Z/monolith - ulozi to stranku kompletne celou vc. css, js atd do jednoho HTML souboru.
A podle vseho to dokaze pouzit headless chromium pro vyrenderovani dynamickeho HTML (JS) pred ulozenim:
chromium --headless --window-size=1920,1080 --run-all-compositor-stages-before-draw --virtual-time-budget=9000 --incognito --dump-dom https://github.com | monolith - -I -b https://github.com -o github.html
-
Co tohle: https://github.com/Y2Z/monolith - ulozi to stranku kompletne celou vc. css, js atd do jednoho HTML souboru.
A není to v kontextu použití trochu nešikovné, přestože že se na to následně ptal.
Tenhle nástroj je míněn, podle mě, spíš na archivaci. Nedává mi moc smysl to celé preprocesit, traverzovat, měnit URI uvnitř stránky, zapékat tam nějaké skripty a inlinovat styly, abych mohl uložit jeden mega soubor na disk. Pak si z toho následně přečtu slavnostně třeba META tagy, nadpis a zahodím to.
V tom Seleniu se inicializuje konkrétní driver, pošlu do něj URL a až se načte, tak můžu si přistupovat k DOM stromu jak chci. To mi přijde mnohem elegantnější a bude to fungovat jak s jednoduchými stránkami, tak s těmi dynamickými.
-
Jo, je to trochu kanon na vrabce, ja moc nepochopil co znamena to "spravit z nej preview tym, ze si vytiahnem z html meta tagy", ale zase to tam ma na jeden uz pripraveny prikaz :)
-
Jo, je to trochu kanon na vrabce, ja moc nepochopil co znamena to "spravit z nej preview tym, ze si vytiahnem z html meta tagy", ale zase to tam ma na jeden uz pripraveny prikaz :)
Nahlad stranky ked postnes niekam odkaz, ako napriklad do Slacku/Discordu. Ide len o bezne html tagy, pripadne og tagy na vytiahnutie nazvu, popisku, obrazku a podobne. JS stranky toto nastavuju programovo podla aktualneho stavu routeru, preto potrebujem aby prehliadac vyrenderoval stranku s javascriptom a az z takeho html ja toto mozem vytiahnut. Brutalna banalita ale ten ubohy stav IT dnes bohuzial aj z takejto neskutocnej blbosti, na urovni print(hello world), robi pomaly nadludsky problem.
-
Nahlad stranky ked postnes niekam odkaz, ako napriklad do Slacku/Discordu.
Aha, uz jsem doma.
Brutalna banalita ale ten ubohy stav IT dnes bohuzial aj z takejto neskutocnej blbosti, na urovni print(hello world), robi pomaly nadludsky problem.
Nebo jsi moc negooglil, automatizovane ukladani HTML, DOMu, screenshotu stranky je bezny use case pri automatizovanem testovani, napr. Puppeteer nebo Playwright to umi resit, tady je napr. tutorial jak pres Puppeteer udelat screenshot stranky: https://www.bannerbear.com/blog/how-to-take-screenshots-with-puppeteer/ a tady je gist jak pres Puppeteer ulozit HTML nactene stranky: https://gist.github.com/schollz/4dcd045a95196f567ba0abdd0ac70452
-
https://shot-scraper.datasette.io/en/stable/html.html
-
možno vás bude zaujímať, že sa dá použiť aj docker, napríklad
https://hub.docker.com/r/selenium/standalone-firefox
https://hub.docker.com/r/selenium/standalone-chrome
-
"Melo by...", "Podle vseho..." to tady neni nikdo schopny napsat co opravdu v praxi pouzil a co mu opravdu realne fungovalo? Selenium funguje jen na neco (chytre weby umi detekovat a je jich stale vic). Nedavno jsem scrapoval jednu jistou stranku primitivnim prikazem v Pythonu. Po urcitem poctu pokusu neodstranitelna roboticky nevyresitelna captcha. V zasade zablokovana IP. Co jsem udelal misto prepinani proxin? Normalne jsem automatizovane otviral okynka ve Windows a tvaril se jako realny uzivatel. Funguje bez problemu. Tzv. Ruska metoda. Nake headless browsery a pod. to obvykle v praxi nefunguje. Nastavovani user agentu a jine naivity, pratele nejsme uz v roce 2000. Samozrejme, pokud dokola scrapujete 1 jedinou stranku tak neco vymyslite a funguje to. Ale kdyz scrapujete pokazde neco jineho, tisice ruznych domen a pod tak pambu s vami. Pokud ma nekdo opravdu realne vyzkousene reseni bez teoretizovani, rad se poucim, taky by mi to pomohlo.
-
...
Právě proto, že primitivní scrapování nefunguje, se používá plnohodnotný browser. Headless znamená to, že nezobrazuje GUI, a dnes už to ani nevypíná akceleraci.
Věci jako Selenium a Puppeteer jde detekovat, protože mění prostředí prohlížeče, ale umí i stealth režim, kde to nedělají. A nic ti nebrání je obejít a spustit prohlížeč bez vypínání a změn čehokoliv a ovládat ho sám. Třeba Chrome DevTools Protocol je primitivní a můžeš si dělat co chceš.
Hodně paranoidní webovka může třeba detekovat "nepřirozené" použití myši a klávesnice, ale obecně to prostě funguje. A tvrzení, že k tomu všemu na webu není dost informací není pravda.
Kromě toho mu stejně bude stačit jen Chromácký --virtual-time-budget a --dump-dom.
-
Ja by som skusil zadat zadanie pre nejaky oblubeny LLM (chatgpt u mna napriklad), ze co chcem a nech pouzije robot framework so seleniom... je to citatelne, vie to robit screenshoty, vytahovat dom ako text a funguje to. Zaroven je to technologia, co sa da pouzit (a pouziva sa) na end to end testy a na rpa (robot process automation)... zide sa v praxi.
PS defoltne sa robot framework pouziva z formatu, co je vlastne tabulka, kde oddelovacom su dve a viac medzier... kusok divne pre mna, ale da sa na to zvyknut a vyuzit to napriklad na prehladnejsie formatovanie.