从urllib.request.urlopen读取标题

时间:2018-11-09 19:54:01

标签: python-3.x http-headers urllib

我已经搜索并找到了很多答案,不幸的是,所有答案都与Python2有关,看起来像这样:

r = urllib.urlopen(url)
headers = r.info()
print(headers.getheader('Content-Disposition'))

但是,这似乎不适用于Python3。没有.getheader()方法。所有标头数据都在r.info()._headers内部作为元组列表。下划线可能暗示不要直接访问它,或者有一种更“正确”的读取标头的方式...如果是这样,读取标头的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果 url 使用 http https 方案 r http.client.HTTPResponse类型。您可以通过以下方式获取标题:

import urllib.request

r = urllib.request.urlopen(url)
print(r.getheaders())
print(r.getheader('Content-Disposition'))

您可以使用print(dir(r))列出r的属性。

答案 1 :(得分:0)

r.info()返回使用email.message.Message类实现的HTTPMessage对象。从文档中看来,headers.get('Content-Disposition')是您想要的方法。