【发布时间】:2017-03-17 16:06:11
【问题描述】:
我有一个 Python 网络爬虫,它正在下载具有不同扩展名的文件。为了从 HTTP 标头内容类型中获取扩展,我使用 Python 库 mimetypes。
http_header = session.head(url, headers={'Accept-Encoding': 'identity'})
extension = mimetypes.guess_extension(http_header.headers['content-type'])
一切正常,除非 HTTP 标头内容类型包含;charset=UTF-8。例如。 mimetypes.guess_extension 为以下示例返回 None
content-type: text/plain;charset=UTF-8 # extension should be .txt OR
content-type: text/x-c;charset=UTF-8 # extension should be .java
检查 mimetypes:
>>> import mimetypes
>>> print(mimetypes.guess_extension('text/plain;charset=UTF-8'))
None
>>>
问题:我该如何处理并从以 ;charset=UTF-8 结尾的内容类型中获取正确的扩展名?
我想用 if 语句捕获此类异常不是一个好的解决方案,因为我不知道白名单是否完整或我是否缺少某些内容类型。
【问题讨论】:
标签: python http mime-types content-type