无法使用 Python 从 url 链接下载图像

我想从网上下载图像,但无论使用哪种方法,我总是收到错误消息。但是,使用这种方法下载其他图像没有问题。

方法一


使用 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>

方法二


使用 Python 的 Selenium 库和 chromedriver。在这里,我尝试在 Web 浏览器中显示图像并使用 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()

这种方法的问题是在 chromedriver 驱动程序打开的 Chrome 浏览器中没有加载(显示)图像。手动将链接粘贴到普通(桌面应用程序)Chrome 中时,会显示图像。


达令说
浏览 311回答 3
3回答

qq_花开花谢_0

我在两个链接上测试了这两种方法,看起来第二个链接有问题:第一个工作得很好,无论是使用浏览器手动打开它还是使用任何这些方法;第二个没有在浏览器中打开,并且在两种方法中都出现错误(这两种方法都很好)。如错误消息中所述&nbsp;Could not find layer custom:vrbovce_elektrina- 在两种方法和手动粘贴中,浏览器都找不到名为vrbovce_elektrina.&nbsp;也许那里有错字或此页面上没有这样的图像/图层。代码很好,就是链接失效了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python