我想从网上下载一个图像,但是不管使用什么方法,我总是得到一个错误。但是,我可以使用这种方法下载其他图像。在
方法1
使用Python的请求和枕头库。在这里,图像应该直接从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')
我得到以下错误:
^{pr2}$方法2
使用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中时,会显示图像。在
使用请求,只需将响应内容写入文件:
正如@Piotrek所写,问题不在代码中。我想问题出在服务器端。这对我很有效:
中打开了图像的url链接 使用selenium python模块的chrome web浏览器
这是对我有用的代码:
我在两个链接上测试了这两个方法,结果发现第二个链接有问题:第一个非常好用,无论是用浏览器手动打开还是使用这些方法;第二个不能在浏览器中打开,两个方法都会出错(这两个方法都很好)。在
正如在错误消息-
Could not find layer custom:vrbovce_elektrina
-中所写,在两种方法和手动粘贴中,浏览器都找不到一个名为vrbovce_elektrina
的层。可能是有一个打字错误,或是没有这样的图像/层在这一页。在代码很好,只是链接不起作用。在
相关问题 更多 >
编程相关推荐