Почему OpenStreetMap дает ошибку 403 через Python's urllib.request.urlretrive, но работает отлично при использовании запPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему OpenStreetMap дает ошибку 403 через Python's urllib.request.urlretrive, но работает отлично при использовании зап

Сообщение Anonymous »

Я пытаюсь взять плитки от OpenStreetMap. Я выучил синтаксис их API. У меня есть «старый способ» делать вещи, использование запросов и «новый путь», который используется чьим -то проектом GitHub. Я пытаюсь использовать их проект, но для меня это терпит неудачу в одном месте. Затем я собрал этот короткий сценарий в качестве минимального примера: < /p>
from PIL import Image
import requests
import urllib.request

#A tile we want to grab from Open Street Map
tile_url = "https://a.tile.openstreetmap.org/16/19299/24629.png"

#Old way: Get the bytes via requests.get, then parse as image and save.
old_way = Image.open(requests.get(tile_url,stream=True).raw)
old_way.save("oldway.png")

#New way: use urlretrieve to directly copy the file over to newway.png
destination = "newway.png"
try:
path, response = urllib.request.urlretrieve(tile_url, destination)
except urllib.error.URLError as e:
print("URL error!")
print(e.code)

#Expected behavior: Two identical images are created,
#named oldway.png and newway.png
#Actual behavior: We get oldway, but newway gives a 403 error.
< /code>
Что здесь идет не так? В чем разница между этими двумя http -запросами, которые приводят к первому хорошо работающему, а второй дает ошибку 403? Я попытался копаться в исходном коде соответствующих библиотек Python, но это оказывается довольно длинным беспорядком функций, вызывающих друг друга. И, конечно, с тех пор, как это HTTPS, я не могу контролировать сетевое соединение, чтобы оценить переносимые необработанные байты, и выяснить вещи таким образом. Что -то с заголовками? Обратите внимание, что я не просто пытаюсь решить эту проблему («В чем проблема?>

Подробнее здесь: https://stackoverflow.com/questions/720 ... t-urlretri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Urllib.error.HTTPError: Ошибка HTTP 403: запрещено с помощью urllib.requests
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • RSS-канал Rumble - выдает 403 при вызове с помощью python urllib.request
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • RSS-канал Rumble - выдает 403 при вызове с помощью python urllib.request
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • У меня есть API весенней загрузки, который отлично работает при работе в IDE, но когда я упаковываю API в файл jar и зап
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Aiohttp показывает ошибку 403, но request.get дает ответ 200
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»