內容在http://iihero.cn上也有,這裡轉摘一下。
近期用空閑時間看了看python的一部分module,感覺這斯功能確實so good, so powerful.
(1) 用它post一個http請求:
import urllib,urllib2,cookielib
def post3():
# for mail.sina.com.cn
cj = cookielib.CookieJar()
url_login = 'http://mail.sina.com.cn/cgi-bin/login.cgi'
body = (('logintype','login'), ('u','username'),
('psw', '********'))
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#opener.addheaders = [('User-agent', 'Opera/9.23')]
opener.addheaders = [('User-agent',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]
urllib2.install_opener(opener)
req=urllib2.Request(url_login,urllib.urlencode(body))
u=urllib2.urlopen(req)
print u.read().decode('utf-8').encode('gbk')
下午,試了一下python的http 相關類的方法,用上述代碼登入新浪郵箱,試了一段時間,
比較關鍵的是User-agent,上邊兩種瀏覽器的agent都支援。估計python預設的User-agent得不到sina.com的驗證。
python寫這種http method代碼還是蠻方便的。
(2) 寫一個定時執行任務的小東東,這裡是單線程版本,要改成多線程的也容易。
#!/usr/bin/env python
#coding=utf-8
import thread, time
def task():
'''
Here we can execute some task to be scheduled every n seconds
'''
print "task doing ... ..."
def main(n):
t = time.time()
start_t = t
end_t = start_t + 60*60*72
#while (t < end_t):
while True:
task()
time.sleep(n)
t = time.time()
if __name__ == "__main__":
try:
main(5)
except KeyboardInterrupt:
print "System exit ... ... "
sys.exit(1)