Saya ingin mengunduh gambar dari web, tetapi saya selalu mendapat pesan kesalahan apa pun metode yang digunakan. Namun, saya tidak mengalami masalah saat mendownload gambar lain menggunakan metode ini.
Metode 1
Menggunakan permintaan Python dan perpustakaan Bantal. Di sini gambar harus diunduh langsung dari url.
import requests
from PIL import Image
from io import BytesIO
url = 'https://mobec.sk/proxy/geo?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=custom%3Avrbovce_elektrina&tiled=true&STYLES=&WIDTH=512&HEIGHT=512&CRS=EPSG%3A3857&FORMAT_OPTIONS=dpi%3A180&BBOX=1947003.9844800085%2C6242153.477880634%2C1949449.969385134%2C6244599.46278576'
response = requests.get(url)
img = Image.open(BytesIO(response.content)) # error occurs here
img.save('output.png')
Saya mendapatkan kesalahan berikut:
OSError: cannot identify image file <_io.BytesIO object at 0x04956510>
Metode 2
Menggunakan perpustakaan Selenium dan chromedriver Python. Di sini saya mencoba menampilkan gambar di browser web dan mencetak seluruh halaman menggunakan perpustakaan Selenium.
from selenium import webdriver
from PIL import Image
from io import BytesIO
url = 'https://mobec.sk/proxy/geo?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=custom%3Avrbovce_elektrina&tiled=true&STYLES=&WIDTH=512&HEIGHT=512&CRS=EPSG%3A3857&FORMAT_OPTIONS=dpi%3A180&BBOX=1947003.9844800085%2C6242153.477880634%2C1949449.969385134%2C6244599.46278576'
chrome = webdriver.Chrome('path/to/chromedriver')
chrome.get(url)
png = chrome.get_screenshot_as_png()
im = Image.open(BytesIO(png))
im.save('output.png')
chrome.quit()
Masalah dengan metode ini adalah gambar tidak dimuat (ditampilkan) di browser Chrome yang dibuka oleh driver chromedriver. Saat menempelkan tautan secara manual ke Chrome normal (aplikasi desktop), gambar akan ditampilkan.