I have the following code
import urllib.request
niveau_zoom_satellite = 0.0001389
def Image(coordinates, image_size, name):
d1 = "http://eumetview.eumetsat.int/geoserv/wms?LAYERS=overlay%3Ane_10m_coastline%2Coverlay%3Ane_10m_admin_0_boundary_lines_land&STYLES=&TRANSPARENT=TRUE&FORMAT=image%2Fpng8&VERSION=1.3.0&TILED=true&EXCEPTIONS=INIMAGE&SERVICE=WMS&REQUEST=GetMap&CRS=EPSG%3A4326&BBOX=47.640001058578,3.520001411438,48.880001068115,4.7600014209747&WIDTH=256&HEIGHT=256" % \
(niveau_zoom_satellite,
coordinates[0],
coordinates[1],
image_size[0] / 2,
image_size[1] / 2,
image_size[0],
image_size[1])
for line in urllib.request.urlopen(d1):
if line.startswith("<td align=left><input type=image src="):
d2 = "http://http://eumetview.eumetsat.int/%s" % (line.split("\"")[1],)
break
urllib.request.urlretrieve(d2, name)
if __name__ == '__main__':
Image((4.37337, 47.43572), (256, 256), "test.jpg")
and the problem is
ValueError: unsupported format character 'A' (0x41) at index 58
You use a URL as a format string for %
operator. However, the URL contains several characters that are encoded as %xx
, where xx is a hexadecimal code of the character (3A for colon :
and 2F for slash /
). Those %
characters are interpreted as beginnings of format specifications. You should either escape them by replacing single %
with double %%
to avoid interpretation by %
operator, or get rid of the %
operator altogether and use format
method instead.
BTW, I don't see any actual format specifications in your string - what do you really want as value of d1
?
Edit: so I'd guess the correct code is something like this:
d1 = "http://eumetview.eumetsat.int/geoserv/wms?LAYERS=overlay%3Ane_10m_coastline%2Coverlay%3Ane_10m_admin_0_boundary_lines_land&STYLES=&TRANSPARENT=TRUE&FORMAT=image%2Fpng8&VERSION=1.3.0&TILED=true&EXCEPTIONS=INIMAGE&SERVICE=WMS&REQUEST=GetMap&CRS=EPSG%3A4326&BBOX={},{},{},{}&WIDTH={}&HEIGHT={}".format(
coordinates[0],
coordinates[1],
image_size[0] / 2,
image_size[1] / 2,
image_size[0],
image_size[1])
I still don't know where niveau_zoom_satellite fits into this.
Its complaining about %3An
in the d1 definition. Better to use str.format() here.
for example:
d1 = "www.blabla.com/{var1}asdasd".format(var1=5)
which will generate:
d1 = "www.blabla.com/5asdasd"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.