发表于2011年11月的文章

Python处理Last-Modified

发表于2011年11月16日

Python检查某个URI是否有修改,可以检查HTTP Response的Last-Modified字段

import urllib2
import datetime
from urllib2 import HTTPError
import datetime
def check_modified(url, last_modified, field_name="Last-Modified"):
    request = urllib2.Request(url) 
    opener = urllib2.build_opener() 
    request.add_header('If-Modified-Since', last_modified)
    try:
        resp = opener.open(request)
        print "Last-Modified: " + resp.headers.get(field_name)
    except HTTPError as e:
        if 304 == e.code:
            print "Not Modified Since: " + last_modified
 
last_modified = datetime.datetime(2011,11,15,0,0).strftime("%a, %d %h %Y %H:%M:%S GMT")
check_modified('http://www.kuaishubao.com', last_modified)

有的服务器并不返回Last-Modified, 所以需要看情况处理,比如

check_modified('http://sunliwen.com', last_modified, field_name="date")

参考:http://www.faqs.org/rfcs/rfc2616.html

如何检测浏览器和操作系统的信息

发表于2011年11月11日

在实现一个功能时,需从UserAgent中抽取出浏览器和操作系统的信息。

浏览器:

  • Opera
  • Chrome
  • Internet Explorer
  • Safari
  • Firefox

操作系统:

  • Windows
  • iPad
  • iPhone
  • Android
  • Mac OS X
  • Linux

实现方法如下:

function getBrowser() {
    var agent = navigator.userAgent;
    return window.opera ? "Opera"
        : /chrom/i.test(agent) ? "Chrome" 
        : /msie/i.test(agent) ? "Internet Explorer" 
        : /applewebkit/i.test(navigator.appVersion) ? "Safari" 
        : /mozilla/i.test(agent) && !/compatible|webkit/i.test(agent) ? "Firefox" 
        : "";
}
 
function getOS() {
    var agent = navigator.userAgent;
    return /windows/i.test(agent) ? "Windows" 
        : /ipad/i.test(agent) ? "iPad" 
        : /iphone/i.test(agent) ? "iPhone" 
        : /android/i.test(agent) ? "Android" 
        : /mac/i.test(agent) ? "Mac OS X" 
        : /x11/i.test(agent) || /linux/i.test(agent) ? "Linux" 
        : "";
}

需要注意的是,检测顺序敏感。

参考:
* Browser detect
* Detect Mobile Browsers