Python urllib2 响应头
我正在尝试提取一个网址请求的响应头。当我使用firebug来分析这个网址请求的响应输出时,它返回了:
Content-Type text/html
但是当我使用以下的python代码:
urllib2.urlopen(URL).info()
得到的输出是:
Content-Type: video/x-flv
我对python和网页编程都很陌生,任何有用的建议都非常感谢。如果需要更多信息,请告诉我。
提前感谢你阅读这篇帖子
6 个回答
2
这个奇怪的差异可能是因为两个请求发送了不同的头信息(可能是那种接受类型的头信息)——你能检查一下吗...? 另外,如果你在使用Firefox(我假设你在用这个浏览器运行firebug?)时,JavaScript正在运行——因为在Python的情况下,它肯定没有运行——那么“结果就不一定了”,就像人们常说的那样;-).
5
内容类型是 text/html
真的就这样,没有冒号吗?
如果是这样的话,那就能解释了:这是一个无效的头信息,所以它会被忽略。这样 urllib 就会自己猜测内容类型,通常是通过查看文件名来判断。如果网址的结尾恰好是 '.flv',它就会猜测这个类型应该是 video/x-flv
。
40
试着像Firefox那样发送请求。你可以在Firebug中查看请求头,所以把它们添加到你的请求对象里:
import urllib2
request = urllib2.Request('http://your.tld/...')
request.add_header('User-Agent', 'some fake agent string')
request.add_header('Referer', 'fake referrer')
...
response = urllib2.urlopen(request)
# check content type:
print response.info().getheader('Content-Type')
还有一个叫HTTPCookieProcessor的东西,可以让这个过程更好,但我觉得在大多数情况下你不需要它。可以看看Python的文档: