我试图使用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'}
任何帮助将不胜感激。非常感谢。
答案 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)