ฉันต้องการดาวน์โหลดรูปภาพจากเว็บ แต่กลับได้รับข้อผิดพลาดเสมอไม่ว่าจะใช้วิธีใดก็ตาม อย่างไรก็ตาม ฉันไม่มีปัญหาในการดาวน์โหลดภาพอื่นโดยใช้วิธีนี้
วิธีที่ 1
การใช้คำขอของ Python และไลบรารี Pillow ที่นี่ควรดาวน์โหลดรูปภาพโดยตรงจาก 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')
ฉันได้รับข้อผิดพลาดต่อไปนี้:
OSError: cannot identify image file <_io.BytesIO object at 0x04956510>
วิธีที่ 2
การใช้ไลบรารี Selenium ของ Python และ Chromedriver ที่นี่ฉันกำลังพยายามแสดงรูปภาพในเว็บเบราว์เซอร์และพิมพ์หน้าจอทั้งหน้าโดยใช้ไลบรารี 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()
ปัญหาของวิธีนี้คือรูปภาพไม่ได้โหลด (แสดง) ในเบราว์เซอร์ Chrome ที่เปิดโดยไดรเวอร์ Chromedriver เมื่อวางลิงก์ลงใน Chrome ปกติ (แอปเดสก์ท็อป) ด้วยตนเอง รูปภาพจะปรากฏขึ้น