python urllib2.request.add_header未返回HTTP错误304(未修改)异常

时间:2015-08-14 11:14:09

标签: python http urllib2

我试图使用python urllib2库来实现处理HTTP的Last-Modified功能,这样如果服务器的GET响应自上次没有被修改,它应该抛出" urllib2.HTTPError:HTTP错误304 :未修改"。我使用下面的代码实现了相同的功能,但不确定为什么我没有得到304响应。

此外,我对urllib2.py进行了研究,但没有在此模块中找到状态代码304实现的任何细节。

以下是我的代码和结果:

import httplib
import urllib2

httplib.HTTPConnection.debuglevel = 1
request = urllib2.Request('http://www.iitg.ac.in/groff/projects.html')
opener = urllib2.build_opener()
firstdatastream = opener.open(request)
print firstdatastream.headers.dict
request.add_header("If−Modified−Since", firstdatastream.headers.dict['last-   modified'])
print "Value of last modified time \n"
var = firstdatastream.headers.dict['last-modified']
print var 
seconddatastream = opener.open(request)
print seconddatastream.headers.dict

第二行代码应该引发" urllib2.HTTPError:HTTP错误304:未修改",因为(这行代码):     request.add_header(" If-Modified-Since",firstdatastream.headers.dict [' last-modified'])

但是我无法在我的控制台结果中看到它。以下是我的结果:

{'内容长度':' 6706','接受范围':'无','服务器&# 39;:' Apache / 2.2.15(红帽)','最后修改':'星期四,2015年5月7日09:27:08 GMT' ,' connection':' close',' etag':'" 8a0ce0-1a32-5157a83ffe2b7"',& #39; date&#39 ;:'星期五,2015年8月14日06:22:02 GMT',' content-type':' text / html;字符集= UTF-8'} 上次修改时间的值

2015年5月7日星期四09:27:08 GMT

  
    
      

{'内容长度':' 6706','接受范围':'无','服务器&# 39;:' Apache / 2.2.15(红帽)','最后修改':'星期四,2015年5月7日09:27:08 GMT' ,' connection':' close',' etag':'" 8a0ce0-1a32-5157a83ffe2b7"',& #39; date&#39 ;:'星期五,2015年8月14日06:22:02 GMT',' content-type':' text / html;字符集= UTF-8'}

    
  

任何帮助将不胜感激。非常感谢。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,我的解决方案是从Google浏览器复制到请求标头的网络中, headers = {         '接受':' application / json,text / javascript, / ; Q = 0.01&#39 ;,         '接受编码':' gzip,deflate,sdch',         '接受语言':' zh-CN,zh; q = 0.8',         '连接':'保持活力',         '主持':' stockpage.10jqka.com.cn',         ' Referer':' http://stockpage.10jqka.com.cn/000001/bonus/',         '用户代理':' Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 52.0.2743.116 Safari / 537.36',         ' X-Requested-With':' XMLHttpRequest'     } 使用方法, request = urllib2.Request(url,headers = headers) response = urllib2.urlopen(request)