#!/usr/bin/env python #coding=utf-8 #python version 2.7.4 class stack: def __init__(self,list=None): self.contain = list self.msize=100; self.top = 0; def getTop(self): if(self.top>0): return self.contain[self.top-1] else: return None def getLength(self): return len(contain); def push(self,str): if(self.top==self.msize): return -1 self.contain.append(str) self.top=self.top +1 def pop(self): try: res=self.contain.pop() return res; except IndexError: return None li = [1,'51','15'] st = stack(li) va='5' print st.pop() print st.pop() st.push('fdef') print st.pop() print st.pop()
#!/usr/bin/env python #coding=utf-8 #python version:2.7.4 #system:windows xp import sys import httplib2 import HTMLParser def getPageContent(url): ''' 使用httplib2用编程的方式根据url获取网页内容 将bytes形式的内容转换成utf-8的字符串 ''' #使用ie9的user-agent,如果不设置user-agent将会得到403禁止访问 headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)', 'cache-control':'no-cache'} if url: response,content = httplib2.Http().request(url,headers=headers) if response.status == 200 : return content class stack: def __init__(self,size=100,list=None): self.contain=[] self.msize=size; self.top = 0; def getTop(self): if(self.top>0): return self.contain[self.top-1] else: return None def getLength(self): return len(self.contain); def push(self,data): if(self.top==self.msize): return -1 self.contain.append(data) self.top=self.top +1 def pop(self): try: res=self.contain.pop() if(self.top>0): self.top=self.top-1 return res; except IndexError: return None class ParserOschinaNew(HTMLParser.HTMLParser): def __init__(self): HTMLParser.HTMLParser.__init__(self) self.st=stack(size=1000) self.st.push('over') def handle_starttag(self,tag,attrs): stack_size = self.st.getLength() if stack_size==1 and tag=='ul': for name,value in attrs: if (name=='class' and value=='BlogList'): self.st.push('ul') break; if (stack_size==2 and tag=='li' ): self.st.push('li') if (stack_size==3 and tag=='h3' ): self.st.push('h3') text = '博客标题:'.decode('utf-8').encode('gb2312','ignore') print '%s'%text if (stack_size==3 and tag=='p' ): self.st.push('p') text = '正文部分:'.decode('utf-8').encode('gb2312','ignore') print '%s'%text if (stack_size==3 and tag=='div' ): for name,value in attrs: if (name=='class' and value=='date'): self.st.push('div') text = '作者:'.decode('utf-8').encode('gb2312','ignore') print '%s'%text def handle_data(self ,data): stack_size = self.st.getLength() if (stack_size==4): print data.decode('utf-8').encode('gb2312','ignore') def handle_endtag(self,tag): stack_size = self.st.getLength() stack_tag = self.st.getTop() if ('h3'==tag and 'h3'==stack_tag): self.st.pop() if ('p'==tag and 'p'==stack_tag): self.st.pop() if ('div'==tag and 'div'==stack_tag): self.st.pop() if ('li'==tag and 'li'==stack_tag): self.st.pop() if ('ul'==tag and 'ul'==stack_tag): self.st.pop() if('over'==self.st.getTop()): print "this is end!" if __name__ == '__main__': pageC = getPageContent('http://www.oschina.net/blog/more?p=1') # pageC = pageC.decode('utf-8').encode('gb2312','ignore') my = ParserOschinaNew() my.feed(pageC)
作者:AshlingR 邮箱:[email protected] 时间:2013.6.2 #!/usr/bin/env python # -*- coding: utf-8 -*- #导入smtplib和MIMEText import smtplib from email.mime.text import MIMEText #配置信息 mail_to ='[email protected]' mail_server ='smtp.qq.com'#163:smtp.163.com qq:smtp.qq.com mail_user_name ='123456879' mail_user_passwd ='123456' mail_postfix ='qq.com' info_list = [ mail_server, mail_user_name,mail_user_passwd ,mail_postfix] ''''' to_list: 目的邮件地址 sub: 邮件的主题 content: 邮件的内容 ''' def send_mail(list,to_list,sub,content): #设置服务器,用户名、口令以及邮箱的后缀 # assert type(to_list) == list mail_server=str(list[0])# 'smtp.stu.edu.cn' mail_user_name=str(list[1])#'11lrao' mail_user_passwd=str(list[2])## 'raoliang' mail_postfix=str(list[3])#'stu.edu.cn' print type(mail_server),mail_server scr_addr='send machine'+'<'+mail_user_name+'@'+mail_postfix+'>' msg = MIMEText(content,_subtype='text/plain',_charset='gb2312') msg['Subject'] = sub msg['From'] = scr_addr ; msg['To'] = to_list try: s = smtplib.SMTP() s.connect(mail_server) s.login(mail_user_name,mail_user_passwd) s.sendmail(scr_addr, to_list, msg.as_string()) s.close() print '1' return True except Exception, e: print 'mail error:' print str(e) return False if __name__ == '__main__': if send_mail(info_list,mail_to,'titile0','content0'): print 'send success' else: print 'send failed'