result = urllib2.urlopen(req).read() result = str(result) self.user = self.username.split('@')[0]
self.cookie.save(self.cookiefile)#保存cookie if '登录成功,正在跳转...' in result: #print("%s 你已成功登陆163邮箱。---------\n" %(user)) flag = True else: flag = '%s 登陆163邮箱失败。'%(self.user) return flag
#获取通讯录 def address_list(self):
#获取认证sid auth = urllib2.Request( url='http://entry.mail.163.com/coremail/fcg/ntesdoor2 username='+self.user+'&lightweight=1&verifycookie=1&language=-1&style=1', headers = self.header ) auth = urllib2.urlopen(auth).read() for i,sid in enumerate(self.cookie): sid = str(sid) if 'sid' in sid: sid = sid.split()[1].split('=')[1] break self.cookie.save(self.cookiefile) #请求地址 url = 'http://twebmail.mail.163.com/js4/s sid='+sid+'&func=global:sequential&showAd=false&userType=browser&uid='+self.username #参数设定(var 变量是必需要的,不然就只能看到:S_OK这类信息) #这里参数也是在firebug下查看的。 postdata = { 'func':'global:sequential', 'showAd':'false', 'sid':'qACVwiwOfuumHPdcYqOOUTAjEXNbBeAr', 'uid':self.username, 'userType':'browser', 'var':'< xml version="1.0" >' } postdata = urllib.urlencode(postdata) #组装请求 req = urllib2.Request( url = url, data = postdata, headers = self.header ) res = urllib2.urlopen(req).read() #解析XML,转换成json #说明:由于这样请求后163给出的是xml格式的数据, #为了返回的数据能方便使用最好是转为JSON json = [] tree = etree.fromstring(res) obj = None for child in tree: if child.tag == 'array': obj = child break #这里多参考一下,etree元素的方法属性等,包括attrib,te