» Poradna » Ostatní

Je možné stáhnout obrázek přes Selenium když je generován dynamicky?

 |   |  Microsoft Windows 10 Firefox 120.0

V nástroji Web Inspector jsem zjistil, že obrázek na jednom webu (doména je jen pro příklad) https://somesite.com/asd/photo.pl není součástí webu, ale je pravděpodobně generován dynamicky ze serveru.Chtěl bych se zeptat, jestli je možné ho stáhnout přes selenium v pythonu.Zkoušel jsem to, ale nefunguje to...Obrázek ke kterému se chci dostat je až po přihlášení, takže by bylo zbytečné to sem uvádět. Ale myslím, že to bude jak píšu, protože všude jinde, kde byl obrázek klasicky s příponou se stáhl správně...Kód pro přehlednost zde (python): https://justpaste.it/9dy2t

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 7 Chrome 73.0.3683.88

Určitě to jde. Obrázek je stále jen "link" co se v prohlížeči stahuje, ať už se na straně serveru načítá z disku nebo generuje z hodnot v databázi. Tvůj problém bude v něčem zcela jiném. U toho generování bude docházet i k nějakým dalším kontrolám hodnot, které prohlížeč zaslal. Když se serveru ty hodnoty nelíbí, tak obrázek nevygeneruje a pak ho python ani nestáhne. Musíš tedy porovnat surové HTTP requesty, které se na server posílají (tj včetně všech skrytých hodnot). Porovnat si variantu, která funguje "asi z prohlížeče" a to co ti nefunguje z pythonu. Odhadnout, který parametr server asi kontroluje, a pak nastavit selenium aby ten parametr posílal tak jak to dělá funkční prohlížeč. A tohle opakovat tak dlouho dokud nezačne fungovat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 120.0.0.0

Samozřejmě, že to půjde - když to vidí uživatel, uvidí to i Selenium. Jen se podívej, jestli není třeba v base64 nebo nějak jinak - kód obsahu toho obrázku zjevně v prohlížeči je. Třeba to mají i nějak ošetřené javascriptem, ale Selenium eval js taky umí. Každopádně konkrétně to bez bližších informací nejde popsat lépe.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Unknown Mozilla 120.0

A ten obrazek je zobrazen na te strance, nebo je z ni jenom odkazany?Pokud je zobrazeni na strance, tak je chyba pouzit requests, staci ten element najit na strance a pak ulozit, protoze webdriver ho ma uz nacteny.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Selenium, Přehlednost