Функция записи Python не сохраняет все изображения - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь загрузить изображения по гиперссылкам ( пример ).Для этого я использую следующую функцию:

def download_logos(lst):
  image_url = lst[1]
  img_data = requests.get(image_url).content
  df.append([lst[0], img_data, lst[2]])
  filename = 'logos/{}/{}.png'.format(lst[2], lst[0])
  os.makedirs(os.path.dirname(filename), exist_ok = True)
  with open(filename, 'wb') as f:
     f.write(img_data)

Переменная lst - это строка в матрице, которая включает название команды, ссылку на изображение и соревнование, в котором команда играет.При запуске этой функции для всех моих данных (543 команды), кажется, пропускает много изображений, только 200-300 загруженных изображений.

Чтобы увидеть, была ли проблема в том, что скрипт не смог получить доступ к ссылке и загрузить данные изображения, я попытался выполнить действие в два этапа, то есть сначала загрузить данные изображения для всех команд, а затем сохранитьданные на диск.К моему удивлению, данные об изображениях присутствовали во всех 543 командах, поэтому, когда я попытался сохранить данные, я ожидал, что все изображения будут присутствовать.К моему удивлению, на этот раз было сохранено около 500 изображений, что все еще было улучшением.

Я не могу выяснить, что может быть причиной этой проблемы, поэтому я надеюсь, что кто-то может указать, где я допустил ошибкуи / или как я могу решить проблему.

1 Ответ

0 голосов
/ 06 октября 2018

Мне удалось найти проблему, которая не была связана с моей функцией загрузки.Я обнаружил, что способ получения ссылок на скачивание с веб-страницы был неправильным, в результате чего я получал дубликаты.Поскольку я ограничивал ссылки на изображения первыми x записями, я пропускал ссылки на изображения после этого.Переписывание функции, которая извлекала ссылки, чтобы избавиться от дубликатов и правильно извлекать ссылки, устранило проблему, позволив мне использовать функцию, определенную выше, для загрузки и сохранения изображений.

...