Headless prohlížeč pro získání HTML

hknmtt

  • ***
  • 228
    • Zobrazit profil
    • E-mail
Headless prohlížeč pro získání HTML
« kdy: 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.


Re:Headless prohlížeč pro získání HTML
« Odpověď #1 kdy: 30. 01. 2025, 16:45:47 »
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.

SR

Re:Headless prohlížeč pro získání HTML
« Odpověď #2 kdy: 30. 01. 2025, 17:17:25 »
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...


hknmtt

  • ***
  • 228
    • Zobrazit profil
    • E-mail
Re:Headless prohlížeč pro získání HTML
« Odpověď #4 kdy: 30. 01. 2025, 17:23:40 »
To su vsetko uplne zbytocnosti. Ja len chcem chrome.exe -headless -output-format-html https://www.google.com to je cele.


jjrsk

  • *****
  • 681
    • Zobrazit profil
Re:Headless prohlížeč pro získání HTML
« Odpověď #5 kdy: 30. 01. 2025, 17:36:00 »
Kdyz tak dokonale vis co chces, tak proc se tu blbe ptas? Si to do toho chromaka dopis, sak je to opensource ....

peete

Re:Headless prohlížeč pro získání HTML
« Odpověď #6 kdy: 30. 01. 2025, 19:18:20 »
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.

Re:Headless prohlížeč pro získání HTML
« Odpověď #7 kdy: 30. 01. 2025, 21:13:13 »
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:

Kód: [Vybrat]
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

Re:Headless prohlížeč pro získání HTML
« Odpověď #8 kdy: 30. 01. 2025, 21:39:34 »
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.

Re:Headless prohlížeč pro získání HTML
« Odpověď #9 kdy: 30. 01. 2025, 21:55:44 »
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  :)

hknmtt

  • ***
  • 228
    • Zobrazit profil
    • E-mail
Re:Headless prohlížeč pro získání HTML
« Odpověď #10 kdy: 30. 01. 2025, 23:24:05 »
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.

Re:Headless prohlížeč pro získání HTML
« Odpověď #11 kdy: 31. 01. 2025, 10:16:02 »
Citace
Nahlad stranky ked postnes niekam odkaz, ako napriklad do Slacku/Discordu.

Aha, uz jsem doma.

Citace
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

noob


Re:Headless prohlížeč pro získání HTML
« Odpověď #13 kdy: 31. 01. 2025, 12:22:42 »
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

peete

Re:Headless prohlížeč pro získání HTML
« Odpověď #14 kdy: 31. 01. 2025, 20:15:47 »
"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.