【问题标题】:Web scrapting of image with Python使用 Python 对图像进行 Web 抓取
【发布时间】:2020-04-04 21:42:17
【问题描述】:

我正在学习 Python 语言,下面的代码保存了 URL 列表中的图像。但是当 URL 不是图像并保存 .png 格式时,我想忽略它。


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)

【问题讨论】:

标签: python list image exception web-scraping


【解决方案1】:

您可以使用标题内容类型

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 告诉你那是一张图片和图片的类型。因此,基于此,您可以决定如何保存它以及做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2023-02-03
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多