Соскреб в сети изображения с Python - PullRequest
0 голосов
/ 05 апреля 2020

Я изучаю Python язык, и приведенный ниже код сохраняет изображения из списка URL. Но я бы хотел игнорировать, когда URL не является изображением, и сохранить формат .png тоже.

<code>
import pandas as pd
import urllib.request

def url_to_jpg(i, url, file_path):


    filename = 'image-{}.jpg'.format(i)

    full_path = '{}{}'.format(file_path, filename)
    urllib.request.urlretrieve(url, full_path)

    return None

FILENAME = 'C:/Users/Home/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Python 3.8/image_url.csv'
FILE_PATH = 'C:/Users/Home/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Python 3.8/imagens2/'

urls = pd.read_csv(FILENAME)

for i, url in enumerate(urls.values):
    url_to_jpg(i, url[0], FILE_PATH)

1 Ответ

1 голос
/ 05 апреля 2020

Вы можете использовать заголовки content-type

import urllib
request = urllib.request.urlretrieve('https://www.jhsph.edu/sebin/j/k/public-health-on-call.jpg')

request[1].__dict__

. Вы увидите, что метод urlretrieve возвращает кортеж, второй элемент:

{'_charset': None,
 '_default_type': 'text/plain',
 '_headers': [('Server', 'nginx/1.17.6'),
  ('Date', 'Sat, 04 Apr 2020 22:00:21 GMT'),
  ('Content-Type', 'image/jpeg'),
  ('Content-Length', '129747'),
  ('Connection', 'close'),
  ('Last-Modified', 'Wed, 04 Mar 2020 15:26:43 GMT'),
  ('ETag', '"3632864f39f2d51:0"'),
  ('X-Powered-By', 'ASP.NET'),
  ('Accept-Ranges', 'bytes')],
 '_payload': '',
 '_unixfrom': None,
 'defects': [],
 'epilogue': None,
 'policy': Compat32(),
 'preamble': None}

Content-Type сообщает, что это изображение и тип изображения. Итак, исходя из этого, вы можете решить, как его сохранить и что делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...